{"version":3,"sources":["webpack:///../build/node_modules/tslib/tslib.es6.js","webpack:///../build/node_modules/@fullcalendar/common/vdom.js","webpack:///../build/node_modules/@fullcalendar/common/main.js","webpack:///../build/node_modules/marked/lib/marked.umd.js","webpack:///../build/node_modules/pdfobject/pdfobject.js","webpack:///../build/node_modules/vue-multiselect/dist/vue-multiselect.min.js","webpack:///../build/node_modules/@fullcalendar/daygrid/main.js","webpack:///../build/node_modules/@fullcalendar/list/main.js","webpack:///../build/node_modules/@fullcalendar/interaction/main.js","webpack:///../build/node_modules/@fullcalendar/icalendar/main.js","webpack:///../build/node_modules/ical.js/build/ical.js","webpack:///../build/node_modules/vue-multiselect/dist/vue-multiselect.min.css","webpack:///../build/node_modules/preact/dist/preact.module.js","webpack:///../build/node_modules/preact/hooks/dist/hooks.module.js","webpack:///../build/node_modules/preact/compat/dist/compat.module.js","webpack:///../build/node_modules/@fullcalendar/core/vdom.js","webpack:///../build/node_modules/@fullcalendar/core/main.js","webpack:///../build/node_modules/@fullcalendar/vue/dist/options.js","webpack:///../build/node_modules/@fullcalendar/vue/dist/utils.js","webpack:///../build/node_modules/@fullcalendar/vue/dist/custom-content-type.js","webpack:///../build/node_modules/@fullcalendar/vue/dist/FullCalendar.js","webpack:///../build/node_modules/@fullcalendar/vue/dist/main.js","webpack:///../build/node_modules/uuid/dist/esm-browser/rng.js","webpack:///../build/node_modules/uuid/dist/esm-browser/regex.js","webpack:///../build/node_modules/uuid/dist/esm-browser/stringify.js","webpack:///../build/node_modules/uuid/dist/esm-browser/validate.js","webpack:///../build/node_modules/uuid/dist/esm-browser/v4.js"],"names":["_extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","_assign","assign","t","s","i","n","arguments","length","apply","__spreadArray","to","from","pack","ar","l","slice","concat","FullCalendarVDom","Error","Component","createElement","render","createRef","Fragment","createContext","createPortal","flushToDom","unmountComponentAtNode","_typeof","obj","Symbol","iterator","EventSourceApi","context","internalEventSource","remove","dispatch","type","sourceId","refetch","sourceIds","isRefetch","defineProperty","get","publicId","enumerable","configurable","meta","url","format","removeElement","el","parentNode","removeChild","elementClosest","selector","closest","document","documentElement","contains","elementMatches","parentElement","nodeType","matches","matchesSelector","msMatchesSelector","PIXEL_PROP_RE","applyStyle","props","propName","applyStyleProp","name","val","style","test","getEventTargetViaRoot","ev","_a","_b","composedPath","target","getElRoot","getRootNode","guid$1","getUniqueDomId","preventDefault","listenBySelector","container","eventType","handler","attachedHandler","matchedChild","buildDelegationHandler","addEventListener","removeEventListener","transitionEventNames","whenTransitionDone","callback","realCallback","forEach","eventName","createAriaClickAttrs","onClick","createAriaKeyboardAttrs","tabIndex","onKeyDown","key","guidNumber","guid","disableCursor","body","classList","add","enableCursor","preventSelection","allowSelection","preventContextMenu","allowContextMenu","compareByFieldSpec","obj0","obj1","fieldSpec","func","a","localeCompare","flexibleCompare","field","order","padStart","len","substr","formatWithOrdinals","formatter","args","fallbackText","reduce","str","arg","index","replace","compareNumbers","isInt","computeSmallestCellWidth","cellEl","allWidthEl","querySelector","contentWidthEl","getBoundingClientRect","width","DAY_IDS","addWeeks","m","dateToUtcArray","arrayToUtcDate","addDays","addMs","diffWeeks","m0","m1","diffDays","valueOf","diffWholeDays","timeAsMs","Math","round","startOfDay","getUTCFullYear","getUTCMonth","getUTCDate","weekOfGivenYear","marker","year","dow","doy","firstWeekStart","firstWeekOffset","dayStart","days","floor","fwd","getUTCDay","dateToLocalArray","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","arrayToLocalDate","Date","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","UTC","isValidDate","isNaN","createEventInstance","defId","range","forcedStartTzo","forcedEndTzo","instanceId","mergeProps","propObjs","complexPropsMap","dest","name_1","complexObjs","unshift","undefined","name_2","filterHash","hash","filtered","mapHash","newHash","arrayToHash","_i","a_1","hashValuesToArray","push","isPropsEqual","getUnequalProps","keys","compareObjs","oldProps","newProps","equalityFuncs","isObjValsEqual","val0","val1","comparator","expandRecurring","eventStore","framingRange","dateEnv","pluginHooks","options","defs","instances","instance","recurringDef","def","duration","allDay","defaultAllDayEventDuration","defaultTimedEventDuration","starts_1","expandRecurringRanges","recurringTypes","start","end","eventDef","markers","typeId","expand","typeData","subtract","map","PARSE_RE","createDuration","input","unit","exec","sign","years","months","parseInt","milliseconds","parseString","parseObject","month","day","hours","hour","minutes","minute","seconds","second","millisecond","ms","weeks","week","specifiedWeeks","asRoughDays","dur","asRoughMs","greatestDurationDenominator","value","formatDayString","toISOString","formatTimeZoneOffset","doIso","abs","mins","isArraysEqual","a0","a1","equalityFunc","memoize","workerFunc","resEquality","teardownFunc","currentArgs","currentRes","newArgs","res","memoizeObjArg","currentArg","_this","newArg","EXTENDED_SETTINGS_AND_SEVERITIES","separator","omitZeroMinute","meridiem","omitCommas","STANDARD_DATE_PROP_SEVERITIES","timeZoneName","era","weekday","MERIDIEM_RE","COMMA_RE","MULTI_SPACE_RE","LTR_RE","UTC_RE","NativeFormatter","formatSettings","standardDateProps","extendedSettings","severity","max","buildFormattingFunc","formatRange","betterDefaultSeparator","diffSeverity","d0","d1","ca","getMarkerYear","getMarkerMonth","getMarkerDay","computeMarkerDiffSeverity","calendarSystem","biggestUnitForPartial","full0","full1","partialFormattingFunc","biggestUnit","partialOptions","computePartialFormattingOptions","partial0","partial1","insertion","i0","found0","indexOf","before0","after0","i1","found1","before1","after1","before","after","findCommonInsertion","defaultSeparator","getLargestUnit","standardDatePropCnt","timeZoneOffset","num","weekText","weekTextLong","locale","display","parts","simpleNumberFormat","direction","reverse","join","formatWeekNumber","computeWeekNumber","sanitizeSettings","timeZone","zeroFormat","normalFormat","Intl","DateTimeFormat","codes","zeroProps","tzoStr","replaced","injectTzoStr","trim","toLocaleLowerCase","postProcess","buildNativeFormattingFunc","expandZonedMarker","dateInfo","markerToArray","array","createVerboseFormattingArg","startInfo","localeCodes","CmdFormatter","cmdStr","cmdFormatter","FuncFormatter","createFormatter","BASE_OPTION_REFINERS","navLinkDayClick","identity","navLinkWeekClick","bootstrapFontAwesome","buttonIcons","customButtons","nextDayThreshold","scrollTime","scrollTimeReset","Boolean","slotMinTime","slotMaxTime","dayPopoverFormat","slotDuration","snapDuration","headerToolbar","footerToolbar","defaultRangeSeparator","titleRangeSeparator","forceEventDuration","dayHeaders","dayHeaderFormat","dayHeaderClassNames","dayHeaderContent","dayHeaderDidMount","dayHeaderWillUnmount","dayCellClassNames","dayCellContent","dayCellDidMount","dayCellWillUnmount","initialView","aspectRatio","Number","weekends","weekNumberCalculation","weekNumbers","weekNumberClassNames","weekNumberContent","weekNumberDidMount","weekNumberWillUnmount","editable","viewClassNames","viewDidMount","viewWillUnmount","nowIndicator","nowIndicatorClassNames","nowIndicatorContent","nowIndicatorDidMount","nowIndicatorWillUnmount","showNonCurrentDates","lazyFetching","startParam","endParam","timeZoneParam","locales","themeSystem","dragRevertDuration","dragScroll","allDayMaintainDuration","unselectAuto","dropAccept","eventOrder","token","specs","tokens","split","isArray","charAt","substring","eventOrderStrict","handleWindowResize","windowResizeDelay","longPressDelay","eventDragMinDistance","expandRows","height","contentHeight","weekNumberFormat","eventResizableFromStart","displayEventTime","displayEventEnd","progressiveEventRendering","businessHours","initialDate","now","eventDataTransform","stickyHeaderDates","stickyFooterScrollbar","viewHeight","defaultAllDay","eventSourceFailure","eventSourceSuccess","eventDisplay","eventStartEditable","eventDurationEditable","eventOverlap","eventConstraint","eventAllow","eventBackgroundColor","eventBorderColor","eventTextColor","eventColor","eventClassNames","eventContent","eventDidMount","eventWillUnmount","selectConstraint","selectOverlap","selectAllow","droppable","unselectCancel","slotLabelFormat","slotLaneClassNames","slotLaneContent","slotLaneDidMount","slotLaneWillUnmount","slotLabelClassNames","slotLabelContent","slotLabelDidMount","slotLabelWillUnmount","dayMaxEvents","dayMaxEventRows","dayMinWidth","slotLabelInterval","allDayText","allDayClassNames","allDayContent","allDayDidMount","allDayWillUnmount","slotMinWidth","navLinks","eventTimeFormat","rerenderDelay","moreLinkText","moreLinkHint","selectMinDistance","selectable","selectLongPressDelay","eventLongPressDelay","selectMirror","eventMaxStack","eventMinHeight","eventMinWidth","eventShortHeight","slotEventOverlap","plugins","firstDay","dayCount","dateAlignment","dateIncrement","hiddenDays","monthMode","fixedWeekCount","validRange","visibleRange","titleFormat","eventInteractive","noEventsText","viewHint","navLinkHint","closeHint","timeHint","eventHint","moreLinkClick","moreLinkClassNames","moreLinkContent","moreLinkDidMount","moreLinkWillUnmount","BASE_OPTION_DEFAULTS","center","CALENDAR_LISTENER_REFINERS","datesSet","eventsSet","eventAdd","eventChange","eventRemove","windowResize","eventClick","eventMouseEnter","eventMouseLeave","select","unselect","loading","_unmount","_beforeprint","_afterprint","_noEventDrop","_noEventResize","_resize","_scrollRequest","CALENDAR_OPTION_REFINERS","buttonText","buttonHints","views","initialEvents","events","eventSources","COMPLEX_OPTION_COMPARATORS","isBoolComplexEqual","VIEW_OPTION_REFINERS","component","buttonTextKey","dateProfileGeneratorClass","usesMinMaxTime","classNames","content","didMount","willUnmount","mergeRawOptions","optionSets","refineProps","refiners","refined","extra","raw","parseEvents","rawEvents","eventSource","allowOpenRange","eventRefiners","buildEventRefiners","rawEvents_1","tuple","parseEvent","eventTupleToStore","getRelevantEvents","def_1","newStore","filterEventStoreDefs","lookDef","def0","def1","groupId","createEmptyEventStore","mergeEventStores","store0","store1","filterFunc","parseClassNames","EVENT_UI_REFINERS","startEditable","durationEditable","constraint","overlap","allow","className","color","backgroundColor","borderColor","textColor","EMPTY_EVENT_UI","constraints","allows","createEventUi","normalizeConstraint","combineEventUis","uis","combineTwoEventUis","item0","item1","EVENT_NON_DATE_REFINERS","id","title","interactive","EVENT_DATE_REFINERS","EVENT_REFINERS","extendedProps","refineEventDef","computeIsDefaultAllDay","recurringRes","parsed","parse","allDayGuess","parseRecurring","parseEventDef","singleRes","startMeta","endMeta","startMarker","hasEnd","endMarker","startInput","createMarkerMeta","isTimeUnspecified","forcedTzo","parseSingle","ui","eventDefMemberAdders","memberAdder","freeze","computeAlignedDayRange","timedRange","dayCnt","computeVisibleDayRange","startDay","endDay","endTimeMS","isMultiDayRange","diffDates","date0","date1","largeUnit","diffWholeYears","diffWholeMonths","m0day","m1day","invertRanges","ranges","constraintRange","dateRange","invertedRanges","sort","compareRanges","range0","range1","intersectRanges","newRange","min","rangesIntersect","rangeContainsRange","outerRange","innerRange","rangeContainsMarker","sliceEventStore","eventUiBases","inverseBgByGroupId","inverseBgByDefId","defByGroupId","bgRanges","fgRanges","eventUis","compileEventUis","origRange","normalRange","slicedRange","isStart","isEnd","invertedRanges_1","invertedRange","invertedRanges_2","bg","fg","setElSeg","seg","fcSeg","getElSeg","eventDefs","compileEventUi","sortEventSegs","segs","eventOrderSpecs","objs","buildSegCompareObj","fieldSpecs","cmp","compareByFieldSpecs","c","_seg","eventRange","computeSegDraggable","transformers","isDraggableTransformers","transformers_1","transformer","computeSegStartResizable","computeSegEndResizable","buildSegTimeText","timeFormat","defaultDisplayEventTime","defaultDisplayEventEnd","startOverride","endOverride","eventInstance","wholeEventStart","wholeEventEnd","segStart","segEnd","isStartDay","isEndDay","getSegMeta","todayRange","nowDate","segRange","isPast","isFuture","isToday","buildEventRangeKey","getSegAnchorAttrs","href","emitter","hasHandlers","trigger","event","jsEvent","view","viewApi","STANDARD_PROPS","parseDateSpan","defaultDuration","span","standardProps","parseOpenDateSpan","isDateSpansEqual","span0","span1","isSpanPropsEqual","buildRangeApiWithTimeZone","omitTime","buildRangeApi","toDate","startStr","formatIso","endStr","fabricateEventRange","dateSpan","triggerDateSelect","selection","pev","buildDateSpanApiWithContext","origEvent","calendarApi","dateSpanTransforms","transform","getDefaultEventEnd","applyMutationToEventStore","eventConfigBase","mutation","eventConfigs","applyMutationToEventDef","applyMutationToEventInstance","eventConfig","startDelta","endDelta","copy","eventDefMutationAppliers","applier","forceAllDay","clearEnd","datesDelta","ViewApi","getCurrentData","viewTitle","dateProfile","activeRange","currentRange","getOption","EVENT_SOURCE_REFINERS","success","failure","parseEventSource","rawObj","buildEventSourceRefiners","metaRes","eventSourceDefs","parseMeta","sourceDefId","buildEventSourceMeta","_raw","isFetching","latestFetchId","fetchRange","eventSourceRefiners","getNow","nowInput","createNowMarker","createMarker","CalendarApi","currentDataManager","action","batchRendering","updateSize","setOption","optionName","rawOptionValue","currentCalendarOptionsInput","getAvailableLocaleCodes","availableRawLocales","on","handlerName","currentCalendarOptionsRefiners","console","warn","off","changeView","viewType","dateOrRange","dateMarker","zoomTo","spec","viewSpecs","getUnitViewSpec","toolbarConfig","viewTypes","header","viewsWithButtons","footer","singleUnit","prev","next","prevYear","state","addYears","currentDate","nextYear","today","calendarOptions","gotoDate","zonedDateInput","incrementDate","deltaInput","delta","formatDate","settings","dateOrObj","endDate","selectionInput","dateSelection","triggerDateUnselect","addEvent","eventInput","sourceInput","_def","_instance","triggerEventAdd","sourceApi","getEventSourceById","newEventApi","eventApi","relatedEvents","revert","eventApiToStore","getEventById","getEvents","currentData","buildEventApis","removeAllEvents","getEventSources","sourceHash","sourceApis","internalId","addEventSource","sources","removeAllEventSources","refetchEvents","scrollToTime","timeInput","time","EventApi","_context","setProp","mutate","setExtendedProp","setStart","granularity","maintainDuration","setEnd","endInput","setDates","instanceRange","moveStart","moveEnd","moveDates","setAllDay","formatInput","context_1","eventStore_1","relevantEvents","oldEvent","asStore","toPlainObject","collapseColor","collapseExtendedProps","toJSON","excludeInstance","eventApis","excludeInstanceId","calendarSystemClassMap","theClass","GregorianCalendarSystem","arrayToMarker","arr","ISO_RE","DateEnv","isNamedTimeZone","namedTimeZoneImpl","canComputeOffset","createCalendarSystem","weekDow","weekDoy","weekNumberFunc","timestampToMarker","getYear","addMonths","greatestWholeUnit","diffWholeWeeks","diffHours","diffMinutes","diffSeconds","countDurationsBetween","diff","asRoughMonths","startOf","startOfYear","startOfMonth","startOfWeek","startOfHour","startOfMinute","startOfSecond","y","w","nextW","weekOfYear","dateOptions","offsetForMarker","isEndExclusive","extraOptions","omitTimeZoneOffset","stripZeroTime","buildIsoString","timestampToArray","getTimezoneOffset","offsetForArray","globalLocales","MINIMAL_RAW_EN_LOCALE","code","list","RAW_EN_LOCALE","eventCnt","organizeRawLocales","explicitRawLocales","defaultCode","allRawLocales","rawLocaleMap","en","allRawLocales_1","rawLocale","buildLocale","inputSingular","available","codeArg","j","simpleId","queryRawLocale","parseLocale","queryLocale","merged","NumberFormat","canVGrowWithinCell","DEF_DEFAULTS","startTime","endTime","daysOfWeek","parseBusinessHours","rawDefs","filter","rawDef","refineInputs","pointInsideRect","point","rect","left","right","top","bottom","intersectRects","rect1","rect2","constrainPoint","getRectCenter","diffPoints","point1","point2","getCanVGrowWithinCell","position","innerHTML","appendChild","possible","offsetHeight","computeCanVGrowWithinCell","EMPTY_EVENT_STORE","Splitter","getKeysForEventDefs","_getKeysForEventDefs","splitDateSelection","_splitDateSpan","splitEventStore","_splitEventStore","splitIndividualUi","_splitIndividualUi","splitEventDrag","_splitInteraction","splitEventResize","eventUiBuilders","splitProps","keyInfos","getKeyInfo","defKeys","dateSelections","individualUi","eventStores","eventDrags","eventDrag","eventResizes","eventResize","info","buildEventUiForKey","keyInfo","buildEventUi","eventSelection","dateSpans","keys_1","getKeysForDateSpan","getKeysForEventDef","splitStores","_c","splitHashes","interaction","splitStates","affectedStores_1","affectedEvents","mutatedKeysByDefId","mutatedEvents","mutatedStores_1","populate","isEvent","allUi","eventUiForKey","baseParts","stuff","getDateMeta","isDisabled","isOther","getDayClassNames","theme","getClass","DAY_FORMAT","WEEK_FORMAT","buildNavLinkAttrs","isTabbable","dateStr","zonedDate","handleInteraction","customAction","_scrollbarWidths","_isRtlScrollbarOnLeft","getIsRtlScrollbarOnLeft","outerEl","border","padding","overflow","firstChild","computeIsRtlScrollbarOnLeft","getScrollbarWidths","computeScrollbarWidthsForEl","computeScrollbarWidths","x","clientHeight","offsetWidth","clientWidth","computeInnerRect","goWithinPadding","doFromWindowViewport","outerRect","computeRect","edges","getPadding","computedStyle","window","getComputedStyle","borderLeft","borderLeftWidth","borderRight","borderRightWidth","borderTop","borderTopWidth","borderBottom","borderBottomWidth","badScrollbarWidths","scrollbarLeftRight","scrollbarBottom","scrollbarLeft","scrollbarRight","paddingLeft","paddingRight","paddingTop","paddingBottom","computeEdges","pageXOffset","pageYOffset","getClippingParents","parents","HTMLElement","overflowY","overflowX","Emitter","handlers","thisContext","setThisContext","setOptions","addToHash","removeFromHash","attachedHandlers","optionHandler","handlers_1","PositionCache","originEl","els","isHorizontal","isVertical","originClientRect","buildElHorizontals","buildElVerticals","originClientLeft","lefts","rights","originClientTop","tops","bottoms","leftToIndex","leftPosition","topToIndex","topPosition","getWidth","leftIndex","getHeight","topIndex","ScrollController","getMaxScrollTop","getScrollHeight","getClientHeight","getMaxScrollLeft","getScrollWidth","getClientWidth","canScrollVertically","canScrollHorizontally","canScrollUp","getScrollTop","canScrollDown","canScrollLeft","getScrollLeft","canScrollRight","_super","ElementScrollController","scrollTop","scrollLeft","setScrollTop","setScrollLeft","scrollWidth","scrollHeight","WindowScrollController","scroll","Theme","iconOverrideOption","setIconOverride","iconOverrideHash","iconClassesCopy","buttonName","iconClasses","applyIconOverridePrefix","prefix","iconOverridePrefix","classes","getIconClass","isRtl","rtlIconClasses","baseIconClass","getCustomButtonIconClass","customButtonProps","iconOverrideCustomButtonOption","ScrollResponder","execFunc","handleScrollRequest","request","queuedRequest","drain","fireInitialScroll","detach","update","isDatesNew","ViewContextType","buildViewContext","viewSpec","viewOptions","dateProfileGenerator","registerInteractiveComponent","unregisterInteractiveComponent","addResizeHandler","removeResizeHandler","createScrollResponder","PureComponent","shouldComponentUpdate","nextProps","nextState","debug","log","propEquality","stateEquality","addPropsEquality","addStateEquality","contextType","BaseComponent","setRef","ref","current","DateComponent","uid","prepareHits","queryHit","positionLeft","positionTop","elWidth","elHeight","isValidSegDownEl","isValidDateDownEl","createPlugin","deps","reducers","isLoadingFuncs","contextInit","eventDragMutationMassagers","dateSelectionTransformers","datePointTransforms","viewPropsTransformers","isPropsValid","externalDefTransforms","viewContainerAppends","eventDropTransformers","componentInteractions","calendarInteractions","themeClasses","namedTimeZonedImpl","elementDraggingImpl","optionChangeHandlers","scrollGridImpl","contentTypeHandlers","listenerRefiners","optionRefiners","propSetHandlers","buildBuildPluginHooks","currentHooks","currentOverrideDefs","currentGlobalDefs","overrideDefs","globalDefs","pluginDefs","isAdded","hooks","addDefs","defs_1","hooks1","hooks0","buildPluginHooks","StandardTheme","ensureViewDef","defaultConfigs","overrideConfigs","viewDef","defaultConfig","overrideConfig","queryProp","theComponent","superType","superDef","defaults","rawOptions","overrides","buildViewDef","root","tableCellShaded","buttonGroup","button","buttonActive","close","RenderHook","rootElRef","handleRootEl","elRef","hookProps","ContentHook","defaultContent","backupElRef","innerElRef","innerContent","children","normalizeClassNames","CustomContentRenderContext","Consumer","renderId","ContentHookInner","renderInnerContent","componentDidMount","updateCustomContent","componentDidUpdate","componentWillUnmount","customContentInfo","destroy","getInnerContent","getContentMeta","contentKey","contentVal","buildLifecycleFuncs","normalizeContent","searchKey","MountHook","rootEl","buildClassNameNormalizer","currentGenerator","currentHookProps","currentClassNames","generator","ViewRoot","customClassNames","parseViewConfigs","inputs","parseViewConfig","viewProps","viewElRef","buildViewSpecs","defaultInputs","optionOverrides","dynamicOptionOverrides","localeDefaults","compileViewDefs","durationInput","durationUnit","singleUnitOverrides","json","JSON","stringify","durationInputMap","createDurationCached","denom","queryButtonText","optionsSubset","buttonTextMap","queryButtonTitle","buttonKey","optionDefaults","buttonTextOverride","buttonTextDefault","buttonTitleOverride","buttonHint","buttonTitleDefault","buildViewSpec","DateProfileGenerator","initHiddenDays","buildPrev","currentDateProfile","forceToValid","prevDate","currentRangeUnit","build","buildNext","nextDate","currentInfo","isRangeAllDay","renderRange","isValid","buildValidRange","trimHiddenDays","buildCurrentRangeInfo","buildRenderRange","adjustActiveRange","buildDateIncrement","validRangeInput","simpleInput","refineRange","buildRangeFromDuration","buildRangeFromDayCount","buildCustomVisibleRange","getFallbackDuration","computeRes","isHiddenDay","skipHiddenDays","runningCount","visibleRangeInput","fallback","customAlignment","rangeInput","isHiddenDayHash","inc","isExclusive","initEventSources","addSources","rawSources","rawSources_1","source","parseInitialSources","reduceEventSources","eventSourceHash","fetchDirtySources","fetchSourcesByIds","excludeStaticSources","fetchId","receiveResponse","computeEventSourcesLoading","sources_1","doesSourceNeedRange","isSourceDirty","prevSources","sourceIdHash","nextSources","fetchSource","sourceDef","fetch","xhr","error","message","ignoreRange","reduceEventStore","subset","calEachTransform","sourceEachTransform","transformEachRawEvent","transformRawEvents","excludeEventsBySourceId","receiveRawEvents","expandRange","master","sub","filteredDefs","filteredInstances","excludeSubEventStore","refinedEvents","rawEvent","refinedEvent","reduceDateSelection","currentSelection","reduceSelectedEvent","currentInstanceId","eventInstanceId","reduceEventDrag","currentDrag","newDrag","reduceEventResize","currentResize","newResize","parseToolbars","calendarOptionOverrides","parseToolbar","sectionStrHash","sectionWidgets","hasTitle","sectionName","sectionRes","parseSection","widgets","sectionStr","calendarCustomButtons","calendarButtonTextOverrides","calendarButtonText","calendarButtonHintOverrides","calendarButtonHints","sectionSubstrs","buttonGroupStr","buttonClick","buttonIcon","click","text","hint","textFallback","prevOrNext","navUnit","requestJson","method","params","successCallback","failureCallback","toUpperCase","encodeParams","injectQueryStringParams","XMLHttpRequest","open","setRequestHeader","onload","status","responseText","err","onerror","send","encodeURIComponent","handleEventSources","unfoundSources","newInputs","inputs_1","inputFound","splice","unfoundSources_1","unfoundSource","newInputs_1","newInput","globalPlugins","isResolved","wrappedSuccess","wrappedFailure","then","unpromisify","bind","extraParams","requestParams","customRequestParams","buildRequestParams","errorMessage","startRecur","endRecur","recurringData","clippedFramingRange","dowHash","dayMarker","instanceStarts","instanceStart","expandRanges","_events","html","currentEl","currentHtml","domNodes","currentDomNodes","newDomNodes","newDomNodes_1","newNode","DelayedRunner","drainedOption","isRunning","isDirty","pauseDepths","timeoutId","delay","isPaused","clearTimeout","tryDrain","setTimeout","pause","scope","resume","force","drained","clear","TaskRunner","runTaskOption","queue","delayedRunner","task","completedTasks","shift","runTask","buildTitle","buildTitleFormat","CalendarDataManager","computeOptionsData","_computeOptionsData","computeCurrentViewData","_computeCurrentViewData","buildDateEnv","buildTheme","buildDateProfileGenerator","buildViewApi","buildViewUiProps","buildEventUiBySource","buildEventUiBases","parseContextBusinessHours","actionRunner","_handleAction","updateData","currentCalendarOptionsRefined","currentViewOptionsInput","currentViewOptionsRefined","data","optionsData","currentViewType","currentViewData","initialDateInput","calendarContext","initialState","renderableEventStore","selectionConfig","contextAndState","reducer","computeIsLoading","resetOptions","append","reduceDynamicOptionOverrides","reduceViewType","dp","reduceDateProfile","reduceCurrentDate","eventUiSingleBase","eventUiBySource","newState","wasLoading","isLoading","onAction","oldDateEnv","newDateEnv","oldData","changeHandlers","oldCalendarOptions","newCalendarOptions","onData","processRawCalendarOptions","refinedOptions","availableLocaleData","warnUnknownOptions","currentRaw","currentRefined","anyChanges","processRawViewOptions","explicitLocale","isLoadingFunc","viewName","CalendarDataProvider","handleData","dataManager","setState","prevProps","newOptionOverrides","SegHierarchy","strictOrder","allowReslicing","maxCoord","maxStackCnt","levelCoords","entriesByLevel","stackCnts","addSegs","hiddenEntries","insertEntry","entry","findInsertion","isInsertionValid","insertEntryAt","handleInvalidInsertion","levelCoord","thickness","stackCnt","touchingEntry","splitEntry","barrier","partCnt","splitHiddenEntries","entrySpan","barrierSpan","intersectSpans","lateral","insertAt","level","buildEntryKey","newEntry","levelCnt","candidateCoord","touchingLevel","touchingLateral","trackingLevel","trackingCoord","trackingEntries","trackingEntry","searchRes","binarySearch","getEntrySpanEnd","lateralIndex","trackingEntryBottom","destLevel","destLateral","toRects","rects","entries","entries_1","item","searchVal","getItemVal","startIndex","endIndex","middleIndex","middleVal","Interaction","isHitComboAllowed","parseInteractionSettings","useEventCenter","interactionSettingsToStore","interactionSettingsStore","ElementDragging","setMirrorIsVisible","bool","setMirrorNeedsRevert","setAutoScrollEnabled","config","DRAG_META_REFINERS","parseDragMeta","leftoverProps","ToolbarSection","widgetGroups","widgetGroup","renderWidgetGroup","isOnlyButtons","widgetGroup_1","widget","titleId","isPressed","activeButton","isTodayEnabled","isPrevEnabled","isNextEnabled","buttonClasses","disabled","groupClassName","Toolbar","startContent","endContent","model","extraClassName","forceLtr","centerContent","renderSection","ViewContainer","availableWidth","handleEl","updateAvailableWidth","handleResize","liquid","labeledById","EventClicking","handleSegClick","segEl","hasUrlContainer","defaultPrevented","location","EventHovering","onMouseEnter","onMouseLeave","currentMatchedChild","handleEventElRemove","currentSegEl","handleSegLeave","handleSegEnter","triggerEvent","removeHoverListeners","mouseOverEv","realOnMouseLeave_1","mouseLeaveEv","publicEvName","CalendarContent","buildViewPropTransformers","buildToolbarProps","headerRef","footerRef","interactionsStore","viewLabelId","settingsInput","interactions","TheInteractionClass","resizeRunner","viewAspectRatio","toolbarProps","viewVGrow","isHeightAuto","forPrint","viewContext","Provider","renderView","buildAppendContent","CalendarInteractionClass","ViewComponent","todayInfo","prevInfo","nextInfo","theClasses","TheClass","CalendarRoot","handleBeforePrint","handleAfterPrint","CLASS_NAME","renderInner$1","TableDateCell","dayMeta","navLinkAttrs","colCnt","extraHookProps","role","colSpan","extraDataAttrs","isSticky","WEEKDAY_FORMAT","TableDowCell","dateMeta","extraClassNames","NowTimer","initialNowDate","initialNowQueriedMs","computeTiming","currentState","unroundedNow","currentUnitStart","nextUnitStart","waitMs","buildDayRange","DayHeader","createDayHeaderFormatter","dates","datesRepDistinctDays","renderIntro","explicitFormat","dateCnt","computeFallbackHeaderFormat","DaySeriesModel","indices","dayIndex","cnt","sliceRange","firstIndex","getDateDayIndex","lastIndex","clippedFirstIndex","clippedLastIndex","ceil","dayOffset","DayTableModel","daySeries","breakOnWeeks","daysPerRow","rowCnt","cells","buildCells","headerDates","buildHeaderDates","rows","row","col","buildCell","seriesSeg","nextIndex","firstCol","lastCol","Slicer","sliceBusinessHours","_sliceBusinessHours","sliceDateSelection","_sliceDateSpan","_sliceEventStore","sliceEventDrag","_sliceInteraction","sliceEventResize","forceDayIfListItem","sliceProps","extraArgs","eventSegs","dateSelectionSegs","businessHourSegs","fgEventSegs","bgEventSegs","sliceNowDate","computeActiveRange","rangeRes","sliceEventRanges","affectedInstances","segs_1","eventRanges","eventRanges_1","sliceEventRange","segs_2","isComponentAllDay","isInteractionValid","isNewPropsValid","isDateSelectionValid","calendarState","dateSpanMeta","filterConfig","subjectEventStore","subjectDefs","subjectInstances","subjectConfigs","otherEventStore","removals","otherDefs","otherInstances","otherConfigs","subjectInstanceId","subjectInstance","subjectRange","subjectConfig","subjectDef","allConstraintsPass","eventOverlapFunc","otherInstanceId","otherInstance","calendarEventStore","subjectAllow","subjectDateSpan","origDef","origInstance","isInteractionPropsValid","relevantEventStore","relevantDefs","relevantInstances","selectionRange","selectOverlapFunc","relevantInstanceId","relevantInstance","selectionAllow","fullDateSpan","isDateSelectionPropsValid","businessHoursUnexpanded","constraints_1","anyRangesContainRange","constraintToRanges","eventStoreToRanges","outerRanges","outerRanges_1","VISIBLE_HIDDEN_RE","Scroller","liquidIsAbsolute","isAbsolute","overcomeLeft","overcomeRight","overcomeBottom","marginLeft","marginRight","marginBottom","maxHeight","needsXScrolling","realClientWidth","getYScrollbarWidth","needsYScrolling","realClientHeight","getXScrollbarWidth","RefMap","masterCallback","currentMap","depths","callbackMap","handleValue","removed","added","refCallback","collect","step","collectFromHash","getAll","computeShrinkWidth","chunkEls","largestWidth","shrinkCells_1","containers","allMatches","querySelectorAll","findElements","shrinkCell","getSectionHasLiquidHeight","sectionConfig","isColPropsEqual","cols0","cols1","renderMicroColGroup","cols","shrinkWidth","colNodes","cols_1","colProps","sanitizeShrinkWidth","minWidth","getSectionClassNames","wholeTableVGrow","renderScrollShim","tableMinWidth","getStickyHeaderDates","getStickyFooterScrollbar","SimpleScrollGrid","processCols","scrollerRefs","scrollerElRefs","_handleScrollerEl","forceYScrollbars","scrollerClientWidths","scrollerClientHeights","handleSizing","computeScrollerDims","sectionConfigs","sections","microColGroupNode","getScrollGridClassNames","collapsibleWidth","currentConfig","configCnt","configI","headSectionNodes","bodySectionNodes","footSectionNodes","isBuggy","roleAttrs","isHeader","outerContent","renderChunkTd","chunk","chunkConfig","getAllowYScrolling","isLiquid","sectionKey","tableClassName","syncRowHeights","tableColGroupNode","rowContent","renderChunkContent","rowSyncHeights","reportRowHeightChange","scrollerEl","section","sections_1","getSectionByKey","scrollerElRef","cols_2","hasShrinkWidth","scrollbarWidth","scroller","harnessEl","EventRoot","timeText","isDraggable","disableDragging","isStartResizable","disableResizing","isEndResizable","isMirror","isDragging","isResizing","isDateSelecting","isSelected","standardClassNames","getEventClassNames","StandardEvent","defaultTimeFormat","renderInnerContent$1","innerProps","DAY_NUM_FORMAT","DayCellContent","refineDayCellHookProps","showDayNumber","extraProps","dayNumberText","DayCellRoot","refineHookProps","dataAttrs","renderFill","fillType","defaultFormat","renderInner","Popover","handleDocumentMouseDown","handleCloseClick","handleDocumentKeyDown","onClose","extraAttrs","parentEl","alignmentEl","alignGridTop","alignmentRect","clippingParents","clippingParents_1","intersection","computeClippedClientRect","popoverDims","popoverTop","popoverLeft","origin_1","offsetParent","MorePopover","startDate","dayClassNames","extraDateSpan","dayEl","layer","MoreLinkRoot","linkElRef","isPopoverOpen","popoverId","handleClick","computeRange","buildPublicSeg","allDayDate","allSegs","hiddenSegs","handlePopoverClose","moreCnt","shortText","renderMoreLinkInner","alignmentElRef","popoverContent","updateParentEl","pickEarliestStart","computeLatestSegEnd","seg0","seg1","pickLatestEnd","factory","exports","_defineProperties","descriptor","writable","prim","toPrimitive","_toPrimitive","_extends","_arrayLikeToArray","arr2","_createForOfIteratorHelperLoose","o","allowArrayLike","it","minLen","toString","_unsupportedIterableToArray","done","getDefaults","async","baseUrl","breaks","extensions","gfm","headerIds","headerPrefix","highlight","langPrefix","mangle","pedantic","renderer","sanitize","sanitizer","silent","smartypants","tokenizer","walkTokens","xhtml","escapeTest","escapeReplace","RegExp","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","escape","encode","unescapeTest","unescape","_","toLowerCase","fromCharCode","caret","edit","regex","opt","getRegex","nonWordAndColonTest","originIndependentUrl","cleanUrl","base","prot","decodeURIComponent","e","baseUrls","justDomain","rtrim","relativeBase","protocol","domain","resolveUrl","encodeURI","noopTest","splitCells","tableRow","count","match","offset","escaped","curr","pop","invert","suffLen","currChar","repeatString","pattern","result","outputLink","cap","link","lexer","inLink","inlineTokens","Tokenizer","_proto","space","src","rules","block","newline","codeBlockStyle","fences","matchIndentToCode","indentToCode","node","matchIndentInNode","indentCodeCompensation","lang","inline","_escapes","heading","trimmed","depth","hr","blockquote","blockTokens","istask","ischecked","indent","blankLine","endsWithBlankLine","line","nextLine","rawLine","itemContents","endEarly","bull","isordered","ordered","loose","items","itemRegex","repeat","trimLeft","search","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","checked","trimRight","spacers","hasMultipleLineBreaks","some","pre","tag","table","align","k","lheading","paragraph","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","findClosingBracket","linkLen","reflink","links","nolink","emStrong","maskedSrc","prevChar","lDelim","nextChar","punctuation","rDelim","rLength","lLength","delimTotal","midDelimTotal","endReg","rDelimAst","rDelimUnd","_text","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","br","del","autolink","prevCapZero","_backpedal","inlineText","_paragraph","_label","_title","bullet","listItemStart","_tag","_comment","normal","reflinkSearch","out","charCodeAt","random","_punctuation","blockSkip","escapedEmSt","_scheme","_email","_attribute","_href","strong","middle","endAst","endUnd","em","_extended_email","Lexer","inlineQueue","lex","lexInline","Constructor","protoProps","staticProps","lastToken","cutSrc","lastParagraphClipped","leading","tabs","extTokenizer","startBlock","Infinity","tempSrc","tempStart","getStartIndex","errMsg","_this2","keepPrevChar","includes","lastIndexOf","startInline","Renderer","_code","infostring","quote","_html","slugger","slug","listitem","checkbox","tablerow","tablecell","flags","image","TextRenderer","Slugger","seen","serialize","getNextSafeSlug","originalSlug","isDryRun","occurenceAccumulator","dryrun","Parser","textRenderer","parseInline","l2","l3","cell","itemBody","ret","renderers","parser","Hooks","preprocess","markdown","postprocess","parseMarkdown","origOpt","throwError","msg","Promise","resolve","reject","onError","marked","checkSanitizeDeprecation","pending","all","_tokens","passThroughHooks","Set","newDefaults","use","childTokens","_len","_key","opts","ext","prevRenderer","_len2","_key2","_loop","prop","_len3","_key3","_loop2","prevTokenizer","_len4","_key4","_loop3","prevHook","has","_len5","_key5","_walkTokens","values","_step","_loop4","_step2","_iterator2","_step3","_iterator3","_step4","_iterator4","_cell","_iterator","module","navigator","userAgent","win","nav","ua","suppressConsole","validateAX","ax","ActiveXObject","supportsPDFs","platform","maxTouchPoints","isChromium","isSafari","isFirefox","supportsPDFVE","pdfViewerEnabled","chrome","safari","vendor","Mozilla","checkSupport","embedError","generatePDFObjectMarkup","embedType","targetNode","pdfOpenFragment","omitInlineStyles","customAttribute","PDFJS_URL","emptyNodeContents","connector","frameborder","cssText","setAttribute","getElementsByTagName","_embed","targetSelector","page","pdfOpenParams","fallbackLink","forcePDFJS","jQuery","getTargetElement","fallbackHTML_default","pdfParams","string","paramArray","fdf","comment","viewrect","buildURLFragmentString","b64","filename","fallbackHTML","Blob","URL","createObjectURL","responseType","blob","response","innerText","outerHTML","convertBase64ToDownloadableLink","embed","pdfobjectversion","r","__esModule","self","Function","__g","store","u","f","h","F","G","g","P","B","S","U","core","W","R","inspectSource","version","__e","v","propertyIsEnumerable","_h","NaN","$isLabel","$groupLabel","O","isOpen","preferredOpenDirection","optimizedHeight","internalSearch","required","multiple","trackBy","label","searchable","clearOnSelect","hideSelected","placeholder","allowEmpty","resetAfter","closeOnSelect","customLabel","taggable","tagPlaceholder","tagPosition","optionsLimit","groupValues","groupLabel","groupSelect","blockKeys","preserveSearch","preselectFirst","mounted","internalValue","filteredOptions","computed","filterAndFlat","isExistingOption","isTag","valueKeys","optionKeys","flatAndStrip","currentOptionLabel","getOptionLabel","watch","$emit","methods","getValue","updateSearch","isOptionDisabled","$isDisabled","selectGroup","pointerDirty","deactivate","find","wholeGroupSelected","every","wholeGroupDisabled","removeLastElement","activate","adjustPosition","pointer","$nextTick","$refs","focus","$el","blur","toggle","innerHeight","openDirection","showPointer","optionHeight","pointerPosition","visibleElements","pointerAdjust","optionHighlight","groupHighlight","addPointerElement","pointerReset","pointerForward","pointerBackward","pointerSet","_t","_k","Arguments","mixins","selectLabel","selectGroupLabel","selectedLabel","deselectLabel","deselectGroupLabel","showLabels","limit","limitText","showNoOptions","showNoResults","tabindex","isSingleLabelVisible","singleValue","visibleValues","isPlaceholderVisible","deselectLabelText","deselectGroupLabelText","selectLabelText","selectGroupLabelText","selectedLabelText","inputStyle","contentStyle","isAbove","showSearchInput","hasSingleSelectedSlot","visibleSingleValue","callee","global","ignoreCase","multiline","unicode","sticky","promise","contentWindow","write","getOwnPropertyDescriptor","mode","copyright","process","setImmediate","clearImmediate","MessageChannel","Dispatch","nextTick","port2","port1","onmessage","postMessage","importScripts","onreadystatechange","set","L","versions","v8","_P","T","V","E","A","PromiseRejectionEvent","C","D","_n","_v","_s","ok","fail","$","enter","exit","N","emit","onunhandledrejection","reason","onrejectionhandled","_d","_w","M","race","BREAK","RETURN","MutationObserver","WebKitMutationObserver","fn","standalone","createTextNode","observe","characterData","defineProperties","getOwnPropertyNames","getPrototypeOf","check","getIteratorMethod","getTime","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","staticRenderFns","_compiled","functional","_scopeId","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","beforeCreate","_injectStyles","esModule","$createElement","_self","staticClass","attrs","keydown","keyCode","currentTarget","keypress","stopPropagation","keyup","mousedown","directives","rawName","expression","_l","domProps","textContent","option","_e","autocomplete","mouseenter","TableView","headerElRef","renderSimpleLayout","headerRowContent","bodyContent","renderHScrollLayout","ScrollGrid","chunks","colGroups","splitSegsByRow","byRow","splitSegsByFirstCol","byCol","splitInteractionByRow","TableCellTop","renderTopInner","forceDayTop","dayNumberId","DEFAULT_TABLE_EVENT_TIME_FORMAT","hasListItemDisplay","TableBlockEvent","TableListItemEvent","TableCellMoreLink","compileSegs","singlePlacements","invisibleSegs","isForcedInvisible","visibility","isExpanded","singlePlacements_1","placement","isVisible","DEFAULT_WEEK_NUM_FORMAT","TableCell","dayElRef","rootDataAttrs","showWeekNumber","weekElRef","weekClassNames","fgContentElRef","fgContent","marginTop","moreMarginTop","bgContent","computeFgSegPlacement","eventInstanceHeights","maxContentHeight","hierarchy","DayGridSegHierarchy","hiddenConsumes","segInputs","unknownHeightSegs","eventHeight","allRects","rectsByEachCol","rects_3","groupRectsByEachCol","singleColPlacements","multiColPlacements","leftoverMargins","currentHeight","currentMarginTop","rects_1","resliceSeg","absoluteTop","multiPlacements","rects_2","isFirstCol","placeRects","moreCnts","moreMarginTops","unknownHeightSegs_1","hiddenEntries_1","hiddenEntry","hiddenSpan","spanStart","spanEnd","forceHidden","excludeHidden","touchingEntryId","placeholderEntry","TableRow","cellElRefs","frameElRefs","fgElRefs","segHarnessRefs","framePositions","businessHoursByCol","bgEventSegsByCol","highlightSegsByCol","getHighlightSegs","mirrorSegsByCol","getMirrorSegs","normalFgNodes","renderFgSegs","mirrorFgNodes","mirrorSegs","colPlacements","topsByInstanceId","colPlacements_1","placements","placements_1","buildAbsoluteTopHash","buildMirrorPlacements","showDayNumbers","showWeekNumbers","renderFillSegs","updateSizing","prevState","currentProps","segPlacements","nodes","segPlacements_1","leftRightCss","isExternalSizingChange","frameEls","oldInstanceHeights","newInstanceHeights","queryEventInstanceHeights","limitByContentHeight","computeMaxContentHeight","segElMap","firstKey","fcContainerEl","getCellEls","elMap","Table","splitBusinessHourSegs","splitBgEventSegs","splitFgEventSegs","splitDateSelectionSegs","rowRefs","businessHourSegsByRow","bgEventSegsByRow","fgEventSegsByRow","dateSelectionSegsByRow","eventDragByRow","eventResizeByRow","limitViaBalanced","colGroupNode","renderRowIntro","isSegAllDay","rowPositions","rowObj","colPositions","getCellRange","getCellEl","DayTableSlicer","dayTableModel","DayTable","slicer","tableRef","headerAlignElRef","DayTableView","buildDayTableModel","headerContent","contentArg","TableDateProfileGenerator","endOfWeek","main","dayGrid","dayGridDay","dayGridWeek","dayGridMonth","ListViewHeaderRow","textId","cellId","dayDate","listDayFormat","sideText","listDaySideFormat","sideNavLinkAttrs","DEFAULT_TIME_FORMAT","ListViewEventRow","timeHeaderId","eventHeaderId","dateHeaderId","interactiveAttrs","renderEventInnerContent","doAllDay","renderAllDayInner","headers","buildTimeContent","ListView","computeDateVars","eventStoreToSegs","_eventStoreToSegs","dateHeaderIdRoot","setRootEl","dayDates","dayRanges","renderSegList","renderEmptyMessage","noEventsClassNames","noEventsContent","renderNoEventsInner","noEventsDidMount","noEventsWillUnmount","segsByDay","groupSegsByDay","innerNodes","daySegs","dayStr","daySegs_1","eventRangesToSegs","eventRangeToSegs","viewEnd","OPTION_REFINERS","createFalsableFormatter","listDay","listWeek","listMonth","listYear","touchMouseIgnoreWait","ignoreMouseDepth","listenerCnt","isWindowTouchMoveCancelled","PointerDragging","containerEl","subjectEl","handleSelector","shouldIgnoreMove","shouldWatchScroll","isTouchDragging","wasTouchScroll","handleMouseDown","shouldIgnoreMouse","ctrlKey","isPrimaryMouseButton","tryStart","createEventFromMouse","initScrollWatch","handleMouseMove","handleMouseUp","recordCoords","cleanup","handleTouchStart","createEventFromTouch","targetEl","handleTouchMove","handleTouchEnd","handleTouchScroll","handleScroll","pageX","prevScrollX","prevPageX","pageY","prevScrollY","prevPageY","isTouch","deltaX","origPageX","deltaY","origPageY","passive","onWindowTouchMove","querySubjectEl","downEl","destroyScrollWatch","cancelTouchScroll","isFirst","touches","ElementMirror","sourceEl","mirrorEl","sourceElRect","zIndex","revertDuration","origScreenX","origScreenY","updateElPosition","handleMove","setIsVisible","stop","needsRevertAnimation","doRevertAnimation","finalSourceElRect","transition","getMirrorEl","cloneNode","boxSizing","margin","ScrollGeomCache","scrollController","doesListening","handleScrollChange","origScrollTop","origScrollLeft","clientRect","computeClientRect","getEventTarget","ElementScrollGeomCache","WindowScrollGeomCache","performance","AutoScroller","isEnabled","scrollQuery","edgeThreshold","maxVelocity","pointerScreenX","pointerScreenY","isAnimating","scrollCaches","everMovedUp","everMovedDown","everMovedLeft","everMovedRight","animate","edge","computeBestEdge","handleSide","msSinceRequest","requestAnimation","scrollStartEl","buildCaches","yDelta","xDelta","requestAnimationFrame","scrollCache","invDistance","distance","velocity","bestSide","leftDist","rightDist","topDist","bottomDist","queryScrollEls","query","FeaturefulElementDragging","minDistance","touchScrollAllowed","mirrorNeedsRevert","isInteracting","isDelayEnded","isDistanceSurpassed","delayTimeoutId","onPointerDown","mirror","startDelay","handleDistanceSurpassed","onPointerMove","autoScroller","onPointerUp","tryStopDrag","handleDelayEnd","tryStartDrag","stopDrag","setIgnoreMove","OffsetTracker","origRect","scrollEl","computeLeft","computeTop","isWithinClipping","tagName","HitDragging","dragging","droppableStore","useSubjectCenter","requireInitial","initialHit","movingHit","finalHit","handlePointerDown","processFirstCoord","handleDragStart","handleDragMove","handlePointerUp","releaseHits","handleDragEnd","subjectRect","origPoint","adjustedPoint","queryHitForOffset","slicedSubjectRect","coordAdjust","forceHandle","hit","isHitsEqual","offsetTrackers","interactionSettings","offsetLeft","offsetTop","bestHit","offsetTracker","originLeft","originTop","componentId","hit0","hit1","buildDatePointApiWithContext","DateClicking","hitDragging","DateSelecting","dragSelection","canSelect","getComponentTouchDelay$1","handleHitUpdate","isFinal","isInvalid","dateSpan0","dateSpan1","dateSelectionTransformers_1","joinHitsIntoSelection","EventDragging","subjectSeg","receivingContext","validMutation","mutatedRelevantEvents","origTarget","initialContext","getComponentTouchDelay","fixedMirrorParent","receivingOptions","massagers","massagers_1","massager","computeEventMutation","displayDrag","initialContext_1","receivingContext_1","relevantEvents_1","mutatedRelevantEvents_1","clearDrag","updatedEventApi","eventChangeArg","transformed","eventRemoveArg","draggedEl","addedEventDef","addedEventInstance","addedEventApi","eventAddArg","SELECTOR","nextContext","prevContext","initialCalendar","EventResizing","draggingSegEl","draggingSeg","querySegEl","isFromStart","computeMutation","UnselectAuto","isRecentPointerDateSelect","matchesCancel","matchesEvent","onSelect","selectInfo","onDocumentPointerDown","onDocumentPointerUp","documentPointer","LISTENER_REFINERS","dateClick","eventDragStart","eventDragStop","eventDrop","eventResizeStart","eventResizeStop","drop","eventReceive","eventLeave","ExternalElementDragging","suppliedDragMeta","droppableEvent","dragMeta","buildDragMeta","canDropElOnCalendar","defProps","computeEventForDateSpan","finalView","addingEvents_1","dataAttrPrefix","prefixedName","getAttribute","getEmbeddedElData","ExternalDraggable","itemSelector","appendTo","eventData","InferredElementDragging","mirrorSelector","currentMirrorEl","handlePointerMove","ThirdPartyDraggable","containerOrSettings","Element","IcalExpander","maxIterations","skipInvalidDates","jCalData","ics","getAllSubcomponents","vevent","evt","toJSDate","between","isEventWithinRange","getTimes","eventOrOccurrence","isDate","exceptions","isRecurrenceException","occurrences","exdates","getAllProperties","exdateProp","exdate","getFirstValue","isRecurring","_loop_1","occurrence_1","getOccurrenceDetails","startTime_1","endTime_1","isOccurrenceExcluded","exception","ex","recurrenceId","eventSourceDef","onSuccess","onFailure","internalState","handleICalEvents","iCalExpander","expandICalEvents","completed","callbacks","requestICal","rawFeed","rangeStart","rangeEnd","iCalRes","expanded","iCalEvent","buildNonDateProps","specifiesEnd","iCalOccurence","summary","extractEventUrl","organizer","description","urlProp","getFirstProperty","OPTIONS","zones","TimezoneService","ICAL","foldLength","newLineChar","helpers","updateTimezones","vcal","allsubs","properties","vtimezones","reqTzid","tzid","getParameter","removeSubcomponent","addSubcomponent","isStrictlyNaN","number","strictParseInt","formatClassType","unescapedIndexOf","buffer","pos","binsearchInsert","seekVal","cmpfunc","mid","cmpval","low","high","dumpn","dump","clone","aSrc","aDeep","foldline","aLine","pad2","trunc","inherits","child","extend","descr","design","FROM_VCARD_NEWLINE","TO_VCARD_NEWLINE","createTextType","fromNewline","toNewline","fromICAL","aValue","structuredEscape","replaceNewlineReplace","replaceNewline","toICAL","regEx","DEFAULT_TYPE_TEXT","defaultType","DEFAULT_TYPE_TEXT_MULTI","multiValue","DEFAULT_TYPE_TEXT_STRUCTURED","structuredValue","DEFAULT_TYPE_INTEGER","DEFAULT_TYPE_DATETIME_DATE","allowedTypes","DEFAULT_TYPE_DATETIME","DEFAULT_TYPE_URI","DEFAULT_TYPE_UTCOFFSET","DEFAULT_TYPE_RECUR","DEFAULT_TYPE_DATE_ANDOR_TIME","commonProperties","commonValues","parseFloat","integer","decorate","UtcOffset","fromString","undecorate","icalValues","uri","aString","Binary","aBinary","aProp","strict","Time","fromDateString","fromDateTimeString","Duration","period","isValueString","Period","fromJSON","recur","Recur","_stringToData","numericDayToIcalDay","fromData","aRecur","icalProperties","detectType","vcardValues","VCardTime","fromDateAndOrTimeString","splitzone","_splitZone","zone","isFromIcal","lastChar","signChar","timestamp","vcardProperties","vcard3Values","binary","vcard","vcard3Properties","nickname","photo","bday","adr","tel","email","mailer","tz","geo","logo","agent","org","note","prodid","rev","sound","icalSet","param","allowXName","allowIanaToken","valueType","multiValueSeparateDQuote","property","vcardSet","vcard3Set","defaultSet","components","vcard3","vtodo","vjournal","valarm","vtimezone","daylight","standard","icalendar","getDesignSet","componentName","jCal","designSet","propIdx","propLen","designSetName","comps","compIdx","compLen","noFold","paramName","jsName","_rfc6868Unescape","propertyValue","propDetails","isDefault","delim","innerMulti","RFC6868_REPLACE_MAP","CHAR","ParserError","stack","_eachLine","_handleContentLine","lastParamIndex","lastValuePos","parsedParams","valuePos","paramPos","_parseParameters","newComponent","propertyDetails","_parseMultiValue","_parseValue","lcname","mvdelim","lastParam","_rfc6868Escape","extendedValue","nextPos","propValuePos","delimiter","lastPos","firstChar","newlineOffset","_hydratedPropertyCount","_hydratedComponentCount","_designSet","_hydrateComponent","_components","comp","_hydrateProperty","_properties","Property","getFirstSubcomponent","jCalLen","hasProperty","getFirstPropertyValue","_removeObjectByIndex","jCalIndex","cache","_removeObject","nameOrObject","objects","cached","_removeAllObjects","idx","nameOrComp","removeAllSubcomponents","addProperty","removeProperty","addPropertyWithValue","setValue","updatePropertyWithValue","nameOrProp","removeAllProperties","_parent","getDefaultType","_updateType","designSetChanged","isDecorated","isMultiValue","isStructuredValue","_hydrateValue","_values","_decorate","_undecorate","_setDecoratedValue","getFirstParameter","parameters","setParameter","removeParameter","details","resetType","removeAllValues","getValues","setValues","icaltype","toICALString","aData","factor","fromSeconds","toSeconds","_normalize","aSeconds","secs","compare","other","decodeValue","_b64_decode","setEncodedValue","_b64_encode","h1","h2","h3","h4","bits","ac","enc","tmp_arr","o1","o2","o3","wrappedJSObject","icalclass","getDuration","subtractDate","getEnd","addDuration","aLenient","fromDateOrDateTimeString","DURATION_LETTERS","parseDurationChunk","letter","object","isNegative","propsToCopy","reset","aOther","thisSeconds","otherSeconds","normalize","aStr","dict","numeric","Timezone","tznames","latitude","longitude","expandedUntilYear","changes","utcOffset","tt","utcTimezone","localTimezone","_ensureCoverage","tt_change","change_num","_findNearbyChange","change_num_to_use","change","prevUtcOffset","adjust_change","_compare_change_fn","zone_change","tmp_change","prev_zone_change","is_daylight","aYear","_minimumExpansionYear","changesEndYear","EXTRA_COVERAGE","MAX_YEAR","subcomps","_expandComponent","aComponent","dtstart","convert_tzoffset","init_changes","changebase","rdatekey","rrule","until","adjust","occ","convert_time","from_zone","to_zone","utc","Z","GMT","register","timezone","_time","_dowCache","_wnCache","_cachedUnixTime","_pendingNormalization","epochTime","resetTo","fromJSDate","aDate","useUTC","aZone","dayOfWeek","aWeekStart","firstDow","SUNDAY","dowCacheKey","q","Y","dayOfYear","is_leap","isLeapYear","daysInYearPassedMonth","endOfMonth","daysInMonth","endOfYear","startDoyWeek","aFirstDayOfWeek","getDominicalLetter","nthWeekDay","aDayOfWeek","aPos","otherDay","isNthWeekDay","weekNumber","week1","wnCacheKey","dt","isoyear","weekOneStarts","daysBetween","answer","aDuration","mult","unixTime","toUnixTime","subtractDateTz","compareDateOnlyTz","attr","_cmp_attr","convertToZone","rc","zone_equals","aExtraDays","aExtraHours","aExtraMinutes","aExtraSeconds","aTime","minutesOverflow","hoursOverflow","daysOverflow","yearsOverflow","fromUnixTime","epoch","defineAttr","fromDayOfYear","aDayOfYear","auto_normalize","fromStringv2","aProperty","wkst","DEFAULT_WEEK_START","THURSDAY","yr","dom","MONDAY","TUESDAY","WEDNESDAY","FRIDAY","SATURDAY","p2","mm","hasMonth","hasDay","hasHour","hasMinute","hasSecond","datepart","timepart","aIcalType","part","tmz","tm","dtlen","tmlen","hasDashDate","hasDashTime","DOW_MAP","SU","MO","TU","WE","TH","FR","SA","REVERSE_DOW_MAP","parseNumericValue","interval","freq","aStart","RecurIterator","rule","isFinite","isByCount","addComponent","aType","ucname","setComponent","aValues","getComponent","getNextOccurrence","aStartTime","aRecurrenceId","iter","uckey","partDesign","optionDesign","INTERVAL","icalDayToNumericDay","kparts","VALID_DAY_NAMES","VALID_BYDAY_PART","ALLOWED_FREQ","FREQ","fmtIcal","COUNT","UNTIL","WKST","BYSECOND","BYMINUTE","BYHOUR","BYDAY","BYMONTHDAY","BYYEARDAY","BYWEEKNO","BYMONTH","BYSETPOS","partArr","partArrIdx","partArrLen","icalrecur_iterator","last","occurrence_number","by_indices","initialized","by_data","days_index","init","sort_byday_rules","setup_defaults","bydayParts","ruleDayOfWeek","wkdy","dayName","expand_year_days","increment_year","_nextByYearDay","has_by_data","tempLast","initLast","dayOfMonth","increment_month","_byDayAndMonthDay","valid","next_second","next_minute","next_hour","next_day","next_week","next_month","next_year","check_contracting_rules","next_generic","increment_second","increment_generic","increment_minute","increment_hour","this_freq","increment_monthday","end_of_data","next_weekday_by_week","week_no","normalizeByMonthDayRules","newRules","ruleIdx","isInit","byMonthDay","dateLen","byDay","dateIdx","dayLen","dataIsValid","lastDay","initMonth","nextMonth","monthsCounter","dayIdx","data_valid","setpos","setpos_total","last_day","is_day_in_byday","check_set_position","coded_day","aRuleType","aInterval","aDateAttr","aFollowingAttr","aPreviousIncr","has_by_rule","dta","aFactor","aNextIncrement","nextunit","validWeeks","monthIdx","first_week","last_week","weekIdx","weekno","partCount","t1","monthkey","t2","monthdaykey","t3","day_","month_","expand_by_day","first_dow","doy_offset","last_dow","by_month_day","spIndex","daycodedkey","month_day","first_matching_day","last_matching_day","expandedDays","daykey","days_list","tmp","start_dow","end_dow","end_year_day","first","this_dow","aRules","check_contract_restriction","indexMapValue","_indexMap","ruleMapValue","_expandMap","pass","CONTRACT","ruleType","bydatakey","weekNo","req","deftime","UNKNOWN","EXPAND","ILLEGAL","RecurExpansion","formatTime","compareTime","ruleDates","exDates","complete","ruleIterators","ruleDateInc","exDateInc","exDate","ruleDate","_init","currentTry","_nextRecurrenceIter","_nextRuleDay","_nextExDay","_extractDates","propertyName","handleProp","iters","iterTime","chosenIter","iterIdx","Event","_rangeExceptionCache","rangeExceptions","strictExceptions","relateException","compareRangeException","THISANDFUTURE","modifiesFuture","findRangeException","rangeItem","occurrence","utcId","rangeExceptionId","startDiff","original","newStart","getRecurrenceTypes","_firstProp","_setProp","_setTime","ComponentParser","parseTimezone","oncomplete","ontimezone","onevent","ical","defaultProps","__k","__b","__d","__c","__h","__v","vnode","__r","debounceRendering","__P","__n","ownerSVGElement","z","nextSibling","insertBefore","setProperty","H","I","removeAttribute","__E","__s","getDerivedStateFromProps","componentWillMount","componentWillReceiveProps","componentWillUpdate","getChildContext","getSnapshotBeforeUpdate","diffed","localName","createElementNS","is","childNodes","dangerouslySetInnerHTML","attributes","__html","unmount","getDerivedStateFromError","componentDidCatch","forceUpdate","__H","cancelAnimationFrame","isPureReactComponent","__f","__u","__R","__O","revealOrder","size","Map","isReactComponent","cancelBubble","persist","isPropagationStopped","isDefaultPrevented","nativeEvent","J","K","selected","defaultValue","$$typeof","Q","globalObj","globalThis","ContextType","origProvider","isNew","subs_1","_props","old","oldDebounceRendering","callbackQ","FakeComponent","Calendar","isRendering","isRendered","customContentRenderId","handleAction","renderRunner","handleRenderRequest","currentData_1","setClassNames","setHeight","wasRendering","pauseRendering","resumeRendering","classNames_1","OPTION_IS_COMPLEX","resources","wrapVDomGenerator","vDomGenerator","vue","createVueContentTypePlugin","vDomContent","$destroy","initialContent","initVue","innerEl","$mount","buildVDomHandler","GlobalVue","internal","$options","scopedSlotOptions","output","$scopedSlots","calendar","buildOptions","getApi","suppliedOptions","beforeUpdate","beforeDestroy","watchers","deep","complexOptionName","shallowCopy","buildWatchers","installed","Vue","install","getRandomValues","rnds8","Uint8Array","rng","crypto","msCrypto","uuid","byteToHex","buf","rnds"],"mappings":"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","file":"js/vendors~[request]-67aaeda23d9f177ce5bc.chunk.js","sourcesContent":["function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\n/* global Reflect, Promise */\nvar _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\nexport { _assign as __assign };\nexport function __rest(s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if ((typeof Reflect === \"undefined\" ? \"undefined\" : _typeof(Reflect)) === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {\n if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n }\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\nexport function __param(paramIndex, decorator) {\n return function (target, key) {\n decorator(target, key, paramIndex);\n };\n}\nexport function __metadata(metadataKey, metadataValue) {\n if ((typeof Reflect === \"undefined\" ? \"undefined\" : _typeof(Reflect)) === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nexport function __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nexport var __createBinding = Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n};\nexport function __exportStar(m, o) {\n for (var p in m) {\n if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n }\n}\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n}\n/** @deprecated */\n\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n}\n/** @deprecated */\n\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n s += arguments[i].length;\n }\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n r[k] = a[j];\n }\n }\n\n return r;\n}\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n\n function fulfill(value) {\n resume(\"next\", value);\n }\n\n function reject(value) {\n resume(\"throw\", value);\n }\n\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n}\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) {\n throw e;\n }), verb(\"return\"), i[Symbol.iterator] = function () {\n return this;\n }, i;\n\n function verb(n, f) {\n i[n] = o[n] ? function (v) {\n return (p = !p) ? {\n value: __await(o[n](v)),\n done: n === \"return\"\n } : f ? f(v) : v;\n } : f;\n }\n}\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator],\n i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n}\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n}\n;\n\nvar __setModuleDefault = Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n }\n\n __setModuleDefault(result, mod);\n\n return result;\n}\nexport function __importDefault(mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n}\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;\n}","/// \nif (typeof FullCalendarVDom === 'undefined') {\n throw new Error('Please import the top-level fullcalendar lib before attempting to import a plugin.');\n}\n\nvar Component = FullCalendarVDom.Component;\nvar createElement = FullCalendarVDom.createElement;\nvar render = FullCalendarVDom.render;\nvar createRef = FullCalendarVDom.createRef;\nvar Fragment = FullCalendarVDom.Fragment;\nvar createContext = FullCalendarVDom.createContext;\nvar createPortal = FullCalendarVDom.createPortal;\nvar flushToDom = FullCalendarVDom.flushToDom;\nvar unmountComponentAtNode = FullCalendarVDom.unmountComponentAtNode;\n/* eslint-enable */\n\nexport { Component, Fragment, createContext, createElement, createPortal, createRef, flushToDom, render, unmountComponentAtNode };","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*!\nFullCalendar v5.10.1\nDocs & License: https://fullcalendar.io/\n(c) 2021 Adam Shaw\n*/\nimport './main.css';\nimport { __assign, __spreadArray, __extends } from 'tslib';\nimport { createContext, Component, createRef, createElement, Fragment, createPortal } from './vdom.js';\nexport * from './vdom.js'; // no public types yet. when there are, export from:\n// import {} from './api-type-deps'\n\nvar EventSourceApi =\n/** @class */\nfunction () {\n function EventSourceApi(context, internalEventSource) {\n this.context = context;\n this.internalEventSource = internalEventSource;\n }\n\n EventSourceApi.prototype.remove = function () {\n this.context.dispatch({\n type: 'REMOVE_EVENT_SOURCE',\n sourceId: this.internalEventSource.sourceId\n });\n };\n\n EventSourceApi.prototype.refetch = function () {\n this.context.dispatch({\n type: 'FETCH_EVENT_SOURCES',\n sourceIds: [this.internalEventSource.sourceId],\n isRefetch: true\n });\n };\n\n Object.defineProperty(EventSourceApi.prototype, \"id\", {\n get: function get() {\n return this.internalEventSource.publicId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventSourceApi.prototype, \"url\", {\n get: function get() {\n return this.internalEventSource.meta.url;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventSourceApi.prototype, \"format\", {\n get: function get() {\n return this.internalEventSource.meta.format; // TODO: bad. not guaranteed\n },\n enumerable: false,\n configurable: true\n });\n return EventSourceApi;\n}();\n\nfunction removeElement(el) {\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n} // Querying\n// ----------------------------------------------------------------------------------------------------------------\n\n\nfunction elementClosest(el, selector) {\n if (el.closest) {\n return el.closest(selector); // really bad fallback for IE\n // from https://developer.mozilla.org/en-US/docs/Web/API/Element/closest\n }\n\n if (!document.documentElement.contains(el)) {\n return null;\n }\n\n do {\n if (elementMatches(el, selector)) {\n return el;\n }\n\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n\n return null;\n}\n\nfunction elementMatches(el, selector) {\n var method = el.matches || el.matchesSelector || el.msMatchesSelector;\n return method.call(el, selector);\n} // accepts multiple subject els\n// returns a real array. good for methods like forEach\n// TODO: accept the document\n\n\nfunction findElements(container, selector) {\n var containers = container instanceof HTMLElement ? [container] : container;\n var allMatches = [];\n\n for (var i = 0; i < containers.length; i += 1) {\n var matches = containers[i].querySelectorAll(selector);\n\n for (var j = 0; j < matches.length; j += 1) {\n allMatches.push(matches[j]);\n }\n }\n\n return allMatches;\n} // accepts multiple subject els\n// only queries direct child elements // TODO: rename to findDirectChildren!\n\n\nfunction findDirectChildren(parent, selector) {\n var parents = parent instanceof HTMLElement ? [parent] : parent;\n var allMatches = [];\n\n for (var i = 0; i < parents.length; i += 1) {\n var childNodes = parents[i].children; // only ever elements\n\n for (var j = 0; j < childNodes.length; j += 1) {\n var childNode = childNodes[j];\n\n if (!selector || elementMatches(childNode, selector)) {\n allMatches.push(childNode);\n }\n }\n }\n\n return allMatches;\n} // Style\n// ----------------------------------------------------------------------------------------------------------------\n\n\nvar PIXEL_PROP_RE = /(top|left|right|bottom|width|height)$/i;\n\nfunction applyStyle(el, props) {\n for (var propName in props) {\n applyStyleProp(el, propName, props[propName]);\n }\n}\n\nfunction applyStyleProp(el, name, val) {\n if (val == null) {\n el.style[name] = '';\n } else if (typeof val === 'number' && PIXEL_PROP_RE.test(name)) {\n el.style[name] = val + \"px\";\n } else {\n el.style[name] = val;\n }\n} // Event Handling\n// ----------------------------------------------------------------------------------------------------------------\n// if intercepting bubbled events at the document/window/body level,\n// and want to see originating element (the 'target'), use this util instead\n// of `ev.target` because it goes within web-component boundaries.\n\n\nfunction getEventTargetViaRoot(ev) {\n var _a, _b;\n\n return (_b = (_a = ev.composedPath) === null || _a === void 0 ? void 0 : _a.call(ev)[0]) !== null && _b !== void 0 ? _b : ev.target;\n} // Shadow DOM consuderations\n// ----------------------------------------------------------------------------------------------------------------\n\n\nfunction getElRoot(el) {\n return el.getRootNode ? el.getRootNode() : document;\n} // Unique ID for DOM attribute\n\n\nvar guid$1 = 0;\n\nfunction getUniqueDomId() {\n guid$1 += 1;\n return 'fc-dom-' + guid$1;\n} // Stops a mouse/touch event from doing it's native browser action\n\n\nfunction preventDefault(ev) {\n ev.preventDefault();\n} // Event Delegation\n// ----------------------------------------------------------------------------------------------------------------\n\n\nfunction buildDelegationHandler(selector, handler) {\n return function (ev) {\n var matchedChild = elementClosest(ev.target, selector);\n\n if (matchedChild) {\n handler.call(matchedChild, ev, matchedChild);\n }\n };\n}\n\nfunction listenBySelector(container, eventType, selector, handler) {\n var attachedHandler = buildDelegationHandler(selector, handler);\n container.addEventListener(eventType, attachedHandler);\n return function () {\n container.removeEventListener(eventType, attachedHandler);\n };\n}\n\nfunction listenToHoverBySelector(container, selector, onMouseEnter, onMouseLeave) {\n var currentMatchedChild;\n return listenBySelector(container, 'mouseover', selector, function (mouseOverEv, matchedChild) {\n if (matchedChild !== currentMatchedChild) {\n currentMatchedChild = matchedChild;\n onMouseEnter(mouseOverEv, matchedChild);\n\n var realOnMouseLeave_1 = function realOnMouseLeave_1(mouseLeaveEv) {\n currentMatchedChild = null;\n onMouseLeave(mouseLeaveEv, matchedChild);\n matchedChild.removeEventListener('mouseleave', realOnMouseLeave_1);\n }; // listen to the next mouseleave, and then unattach\n\n\n matchedChild.addEventListener('mouseleave', realOnMouseLeave_1);\n }\n });\n} // Animation\n// ----------------------------------------------------------------------------------------------------------------\n\n\nvar transitionEventNames = ['webkitTransitionEnd', 'otransitionend', 'oTransitionEnd', 'msTransitionEnd', 'transitionend']; // triggered only when the next single subsequent transition finishes\n\nfunction whenTransitionDone(el, callback) {\n var realCallback = function realCallback(ev) {\n callback(ev);\n transitionEventNames.forEach(function (eventName) {\n el.removeEventListener(eventName, realCallback);\n });\n };\n\n transitionEventNames.forEach(function (eventName) {\n el.addEventListener(eventName, realCallback); // cross-browser way to determine when the transition finishes\n });\n} // ARIA workarounds\n// ----------------------------------------------------------------------------------------------------------------\n\n\nfunction createAriaClickAttrs(handler) {\n return __assign({\n onClick: handler\n }, createAriaKeyboardAttrs(handler));\n}\n\nfunction createAriaKeyboardAttrs(handler) {\n return {\n tabIndex: 0,\n onKeyDown: function onKeyDown(ev) {\n if (ev.key === 'Enter' || ev.key === ' ') {\n handler(ev);\n ev.preventDefault(); // if space, don't scroll down page\n }\n }\n };\n}\n\nvar guidNumber = 0;\n\nfunction guid() {\n guidNumber += 1;\n return String(guidNumber);\n}\n/* FullCalendar-specific DOM Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n// Make the mouse cursor express that an event is not allowed in the current area\n\n\nfunction disableCursor() {\n document.body.classList.add('fc-not-allowed');\n} // Returns the mouse cursor to its original look\n\n\nfunction enableCursor() {\n document.body.classList.remove('fc-not-allowed');\n}\n/* Selection\n----------------------------------------------------------------------------------------------------------------------*/\n\n\nfunction preventSelection(el) {\n el.classList.add('fc-unselectable');\n el.addEventListener('selectstart', preventDefault);\n}\n\nfunction allowSelection(el) {\n el.classList.remove('fc-unselectable');\n el.removeEventListener('selectstart', preventDefault);\n}\n/* Context Menu\n----------------------------------------------------------------------------------------------------------------------*/\n\n\nfunction preventContextMenu(el) {\n el.addEventListener('contextmenu', preventDefault);\n}\n\nfunction allowContextMenu(el) {\n el.removeEventListener('contextmenu', preventDefault);\n}\n\nfunction parseFieldSpecs(input) {\n var specs = [];\n var tokens = [];\n var i;\n var token;\n\n if (typeof input === 'string') {\n tokens = input.split(/\\s*,\\s*/);\n } else if (typeof input === 'function') {\n tokens = [input];\n } else if (Array.isArray(input)) {\n tokens = input;\n }\n\n for (i = 0; i < tokens.length; i += 1) {\n token = tokens[i];\n\n if (typeof token === 'string') {\n specs.push(token.charAt(0) === '-' ? {\n field: token.substring(1),\n order: -1\n } : {\n field: token,\n order: 1\n });\n } else if (typeof token === 'function') {\n specs.push({\n func: token\n });\n }\n }\n\n return specs;\n}\n\nfunction compareByFieldSpecs(obj0, obj1, fieldSpecs) {\n var i;\n var cmp;\n\n for (i = 0; i < fieldSpecs.length; i += 1) {\n cmp = compareByFieldSpec(obj0, obj1, fieldSpecs[i]);\n\n if (cmp) {\n return cmp;\n }\n }\n\n return 0;\n}\n\nfunction compareByFieldSpec(obj0, obj1, fieldSpec) {\n if (fieldSpec.func) {\n return fieldSpec.func(obj0, obj1);\n }\n\n return flexibleCompare(obj0[fieldSpec.field], obj1[fieldSpec.field]) * (fieldSpec.order || 1);\n}\n\nfunction flexibleCompare(a, b) {\n if (!a && !b) {\n return 0;\n }\n\n if (b == null) {\n return -1;\n }\n\n if (a == null) {\n return 1;\n }\n\n if (typeof a === 'string' || typeof b === 'string') {\n return String(a).localeCompare(String(b));\n }\n\n return a - b;\n}\n/* String Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\n\nfunction padStart(val, len) {\n var s = String(val);\n return '000'.substr(0, len - s.length) + s;\n}\n\nfunction formatWithOrdinals(formatter, args, fallbackText) {\n if (typeof formatter === 'function') {\n return formatter.apply(void 0, args);\n }\n\n if (typeof formatter === 'string') {\n // non-blank string\n return args.reduce(function (str, arg, index) {\n return str.replace('$' + index, arg || '');\n }, formatter);\n }\n\n return fallbackText;\n}\n/* Number Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\n\nfunction compareNumbers(a, b) {\n return a - b;\n}\n\nfunction isInt(n) {\n return n % 1 === 0;\n}\n/* FC-specific DOM dimension stuff\n----------------------------------------------------------------------------------------------------------------------*/\n\n\nfunction computeSmallestCellWidth(cellEl) {\n var allWidthEl = cellEl.querySelector('.fc-scrollgrid-shrink-frame');\n var contentWidthEl = cellEl.querySelector('.fc-scrollgrid-shrink-cushion');\n\n if (!allWidthEl) {\n throw new Error('needs fc-scrollgrid-shrink-frame className'); // TODO: use const\n }\n\n if (!contentWidthEl) {\n throw new Error('needs fc-scrollgrid-shrink-cushion className');\n }\n\n return cellEl.getBoundingClientRect().width - allWidthEl.getBoundingClientRect().width + // the cell padding+border\n contentWidthEl.getBoundingClientRect().width;\n}\n\nvar DAY_IDS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']; // Adding\n\nfunction addWeeks(m, n) {\n var a = dateToUtcArray(m);\n a[2] += n * 7;\n return arrayToUtcDate(a);\n}\n\nfunction addDays(m, n) {\n var a = dateToUtcArray(m);\n a[2] += n;\n return arrayToUtcDate(a);\n}\n\nfunction addMs(m, n) {\n var a = dateToUtcArray(m);\n a[6] += n;\n return arrayToUtcDate(a);\n} // Diffing (all return floats)\n// TODO: why not use ranges?\n\n\nfunction diffWeeks(m0, m1) {\n return diffDays(m0, m1) / 7;\n}\n\nfunction diffDays(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60 * 24);\n}\n\nfunction diffHours(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60);\n}\n\nfunction diffMinutes(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60);\n}\n\nfunction diffSeconds(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / 1000;\n}\n\nfunction diffDayAndTime(m0, m1) {\n var m0day = startOfDay(m0);\n var m1day = startOfDay(m1);\n return {\n years: 0,\n months: 0,\n days: Math.round(diffDays(m0day, m1day)),\n milliseconds: m1.valueOf() - m1day.valueOf() - (m0.valueOf() - m0day.valueOf())\n };\n} // Diffing Whole Units\n\n\nfunction diffWholeWeeks(m0, m1) {\n var d = diffWholeDays(m0, m1);\n\n if (d !== null && d % 7 === 0) {\n return d / 7;\n }\n\n return null;\n}\n\nfunction diffWholeDays(m0, m1) {\n if (timeAsMs(m0) === timeAsMs(m1)) {\n return Math.round(diffDays(m0, m1));\n }\n\n return null;\n} // Start-Of\n\n\nfunction startOfDay(m) {\n return arrayToUtcDate([m.getUTCFullYear(), m.getUTCMonth(), m.getUTCDate()]);\n}\n\nfunction startOfHour(m) {\n return arrayToUtcDate([m.getUTCFullYear(), m.getUTCMonth(), m.getUTCDate(), m.getUTCHours()]);\n}\n\nfunction startOfMinute(m) {\n return arrayToUtcDate([m.getUTCFullYear(), m.getUTCMonth(), m.getUTCDate(), m.getUTCHours(), m.getUTCMinutes()]);\n}\n\nfunction startOfSecond(m) {\n return arrayToUtcDate([m.getUTCFullYear(), m.getUTCMonth(), m.getUTCDate(), m.getUTCHours(), m.getUTCMinutes(), m.getUTCSeconds()]);\n} // Week Computation\n\n\nfunction weekOfYear(marker, dow, doy) {\n var y = marker.getUTCFullYear();\n var w = weekOfGivenYear(marker, y, dow, doy);\n\n if (w < 1) {\n return weekOfGivenYear(marker, y - 1, dow, doy);\n }\n\n var nextW = weekOfGivenYear(marker, y + 1, dow, doy);\n\n if (nextW >= 1) {\n return Math.min(w, nextW);\n }\n\n return w;\n}\n\nfunction weekOfGivenYear(marker, year, dow, doy) {\n var firstWeekStart = arrayToUtcDate([year, 0, 1 + firstWeekOffset(year, dow, doy)]);\n var dayStart = startOfDay(marker);\n var days = Math.round(diffDays(firstWeekStart, dayStart));\n return Math.floor(days / 7) + 1; // zero-indexed\n} // start-of-first-week - start-of-year\n\n\nfunction firstWeekOffset(year, dow, doy) {\n // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n var fwd = 7 + dow - doy; // first-week day local weekday -- which local weekday is fwd\n\n var fwdlw = (7 + arrayToUtcDate([year, 0, fwd]).getUTCDay() - dow) % 7;\n return -fwdlw + fwd - 1;\n} // Array Conversion\n\n\nfunction dateToLocalArray(date) {\n return [date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()];\n}\n\nfunction arrayToLocalDate(a) {\n return new Date(a[0], a[1] || 0, a[2] == null ? 1 : a[2], // day of month\n a[3] || 0, a[4] || 0, a[5] || 0);\n}\n\nfunction dateToUtcArray(date) {\n return [date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds()];\n}\n\nfunction arrayToUtcDate(a) {\n // according to web standards (and Safari), a month index is required.\n // massage if only given a year.\n if (a.length === 1) {\n a = a.concat([0]);\n }\n\n return new Date(Date.UTC.apply(Date, a));\n} // Other Utils\n\n\nfunction isValidDate(m) {\n return !isNaN(m.valueOf());\n}\n\nfunction timeAsMs(m) {\n return m.getUTCHours() * 1000 * 60 * 60 + m.getUTCMinutes() * 1000 * 60 + m.getUTCSeconds() * 1000 + m.getUTCMilliseconds();\n}\n\nfunction createEventInstance(defId, range, forcedStartTzo, forcedEndTzo) {\n return {\n instanceId: guid(),\n defId: defId,\n range: range,\n forcedStartTzo: forcedStartTzo == null ? null : forcedStartTzo,\n forcedEndTzo: forcedEndTzo == null ? null : forcedEndTzo\n };\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty; // Merges an array of objects into a single object.\n// The second argument allows for an array of property names who's object values will be merged together.\n\nfunction mergeProps(propObjs, complexPropsMap) {\n var dest = {};\n\n if (complexPropsMap) {\n for (var name_1 in complexPropsMap) {\n var complexObjs = []; // collect the trailing object values, stopping when a non-object is discovered\n\n for (var i = propObjs.length - 1; i >= 0; i -= 1) {\n var val = propObjs[i][name_1];\n\n if (_typeof(val) === 'object' && val) {\n // non-null object\n complexObjs.unshift(val);\n } else if (val !== undefined) {\n dest[name_1] = val; // if there were no objects, this value will be used\n\n break;\n }\n } // if the trailing values were objects, use the merged value\n\n\n if (complexObjs.length) {\n dest[name_1] = mergeProps(complexObjs);\n }\n }\n } // copy values into the destination, going from last to first\n\n\n for (var i = propObjs.length - 1; i >= 0; i -= 1) {\n var props = propObjs[i];\n\n for (var name_2 in props) {\n if (!(name_2 in dest)) {\n // if already assigned by previous props or complex props, don't reassign\n dest[name_2] = props[name_2];\n }\n }\n }\n\n return dest;\n}\n\nfunction filterHash(hash, func) {\n var filtered = {};\n\n for (var key in hash) {\n if (func(hash[key], key)) {\n filtered[key] = hash[key];\n }\n }\n\n return filtered;\n}\n\nfunction mapHash(hash, func) {\n var newHash = {};\n\n for (var key in hash) {\n newHash[key] = func(hash[key], key);\n }\n\n return newHash;\n}\n\nfunction arrayToHash(a) {\n var hash = {};\n\n for (var _i = 0, a_1 = a; _i < a_1.length; _i++) {\n var item = a_1[_i];\n hash[item] = true;\n }\n\n return hash;\n}\n\nfunction buildHashFromArray(a, func) {\n var hash = {};\n\n for (var i = 0; i < a.length; i += 1) {\n var tuple = func(a[i], i);\n hash[tuple[0]] = tuple[1];\n }\n\n return hash;\n}\n\nfunction hashValuesToArray(obj) {\n var a = [];\n\n for (var key in obj) {\n a.push(obj[key]);\n }\n\n return a;\n}\n\nfunction isPropsEqual(obj0, obj1) {\n if (obj0 === obj1) {\n return true;\n }\n\n for (var key in obj0) {\n if (hasOwnProperty.call(obj0, key)) {\n if (!(key in obj1)) {\n return false;\n }\n }\n }\n\n for (var key in obj1) {\n if (hasOwnProperty.call(obj1, key)) {\n if (obj0[key] !== obj1[key]) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nfunction getUnequalProps(obj0, obj1) {\n var keys = [];\n\n for (var key in obj0) {\n if (hasOwnProperty.call(obj0, key)) {\n if (!(key in obj1)) {\n keys.push(key);\n }\n }\n }\n\n for (var key in obj1) {\n if (hasOwnProperty.call(obj1, key)) {\n if (obj0[key] !== obj1[key]) {\n keys.push(key);\n }\n }\n }\n\n return keys;\n}\n\nfunction compareObjs(oldProps, newProps, equalityFuncs) {\n if (equalityFuncs === void 0) {\n equalityFuncs = {};\n }\n\n if (oldProps === newProps) {\n return true;\n }\n\n for (var key in newProps) {\n if (key in oldProps && isObjValsEqual(oldProps[key], newProps[key], equalityFuncs[key])) ;else {\n return false;\n }\n } // check for props that were omitted in the new\n\n\n for (var key in oldProps) {\n if (!(key in newProps)) {\n return false;\n }\n }\n\n return true;\n}\n/*\nassumed \"true\" equality for handler names like \"onReceiveSomething\"\n*/\n\n\nfunction isObjValsEqual(val0, val1, comparator) {\n if (val0 === val1 || comparator === true) {\n return true;\n }\n\n if (comparator) {\n return comparator(val0, val1);\n }\n\n return false;\n}\n\nfunction collectFromHash(hash, startIndex, endIndex, step) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (step === void 0) {\n step = 1;\n }\n\n var res = [];\n\n if (endIndex == null) {\n endIndex = Object.keys(hash).length;\n }\n\n for (var i = startIndex; i < endIndex; i += step) {\n var val = hash[i];\n\n if (val !== undefined) {\n // will disregard undefined for sparse arrays\n res.push(val);\n }\n }\n\n return res;\n}\n\nfunction parseRecurring(refined, defaultAllDay, dateEnv, recurringTypes) {\n for (var i = 0; i < recurringTypes.length; i += 1) {\n var parsed = recurringTypes[i].parse(refined, dateEnv);\n\n if (parsed) {\n var allDay = refined.allDay;\n\n if (allDay == null) {\n allDay = defaultAllDay;\n\n if (allDay == null) {\n allDay = parsed.allDayGuess;\n\n if (allDay == null) {\n allDay = false;\n }\n }\n }\n\n return {\n allDay: allDay,\n duration: parsed.duration,\n typeData: parsed.typeData,\n typeId: i\n };\n }\n }\n\n return null;\n}\n\nfunction expandRecurring(eventStore, framingRange, context) {\n var dateEnv = context.dateEnv,\n pluginHooks = context.pluginHooks,\n options = context.options;\n var defs = eventStore.defs,\n instances = eventStore.instances; // remove existing recurring instances\n // TODO: bad. always expand events as a second step\n\n instances = filterHash(instances, function (instance) {\n return !defs[instance.defId].recurringDef;\n });\n\n for (var defId in defs) {\n var def = defs[defId];\n\n if (def.recurringDef) {\n var duration = def.recurringDef.duration;\n\n if (!duration) {\n duration = def.allDay ? options.defaultAllDayEventDuration : options.defaultTimedEventDuration;\n }\n\n var starts = expandRecurringRanges(def, duration, framingRange, dateEnv, pluginHooks.recurringTypes);\n\n for (var _i = 0, starts_1 = starts; _i < starts_1.length; _i++) {\n var start = starts_1[_i];\n var instance = createEventInstance(defId, {\n start: start,\n end: dateEnv.add(start, duration)\n });\n instances[instance.instanceId] = instance;\n }\n }\n }\n\n return {\n defs: defs,\n instances: instances\n };\n}\n/*\nEvent MUST have a recurringDef\n*/\n\n\nfunction expandRecurringRanges(eventDef, duration, framingRange, dateEnv, recurringTypes) {\n var typeDef = recurringTypes[eventDef.recurringDef.typeId];\n var markers = typeDef.expand(eventDef.recurringDef.typeData, {\n start: dateEnv.subtract(framingRange.start, duration),\n end: framingRange.end\n }, dateEnv); // the recurrence plugins don't guarantee that all-day events are start-of-day, so we have to\n\n if (eventDef.allDay) {\n markers = markers.map(startOfDay);\n }\n\n return markers;\n}\n\nvar INTERNAL_UNITS = ['years', 'months', 'days', 'milliseconds'];\nvar PARSE_RE = /^(-?)(?:(\\d+)\\.)?(\\d+):(\\d\\d)(?::(\\d\\d)(?:\\.(\\d\\d\\d))?)?/; // Parsing and Creation\n\nfunction createDuration(input, unit) {\n var _a;\n\n if (typeof input === 'string') {\n return parseString(input);\n }\n\n if (_typeof(input) === 'object' && input) {\n // non-null object\n return parseObject(input);\n }\n\n if (typeof input === 'number') {\n return parseObject((_a = {}, _a[unit || 'milliseconds'] = input, _a));\n }\n\n return null;\n}\n\nfunction parseString(s) {\n var m = PARSE_RE.exec(s);\n\n if (m) {\n var sign = m[1] ? -1 : 1;\n return {\n years: 0,\n months: 0,\n days: sign * (m[2] ? parseInt(m[2], 10) : 0),\n milliseconds: sign * ((m[3] ? parseInt(m[3], 10) : 0) * 60 * 60 * 1000 + // hours\n (m[4] ? parseInt(m[4], 10) : 0) * 60 * 1000 + // minutes\n (m[5] ? parseInt(m[5], 10) : 0) * 1000 + ( // seconds\n m[6] ? parseInt(m[6], 10) : 0) // ms\n )\n };\n }\n\n return null;\n}\n\nfunction parseObject(obj) {\n var duration = {\n years: obj.years || obj.year || 0,\n months: obj.months || obj.month || 0,\n days: obj.days || obj.day || 0,\n milliseconds: (obj.hours || obj.hour || 0) * 60 * 60 * 1000 + // hours\n (obj.minutes || obj.minute || 0) * 60 * 1000 + // minutes\n (obj.seconds || obj.second || 0) * 1000 + ( // seconds\n obj.milliseconds || obj.millisecond || obj.ms || 0) // ms\n\n };\n var weeks = obj.weeks || obj.week;\n\n if (weeks) {\n duration.days += weeks * 7;\n duration.specifiedWeeks = true;\n }\n\n return duration;\n} // Equality\n\n\nfunction durationsEqual(d0, d1) {\n return d0.years === d1.years && d0.months === d1.months && d0.days === d1.days && d0.milliseconds === d1.milliseconds;\n}\n\nfunction asCleanDays(dur) {\n if (!dur.years && !dur.months && !dur.milliseconds) {\n return dur.days;\n }\n\n return 0;\n} // Simple Math\n\n\nfunction addDurations(d0, d1) {\n return {\n years: d0.years + d1.years,\n months: d0.months + d1.months,\n days: d0.days + d1.days,\n milliseconds: d0.milliseconds + d1.milliseconds\n };\n}\n\nfunction subtractDurations(d1, d0) {\n return {\n years: d1.years - d0.years,\n months: d1.months - d0.months,\n days: d1.days - d0.days,\n milliseconds: d1.milliseconds - d0.milliseconds\n };\n}\n\nfunction multiplyDuration(d, n) {\n return {\n years: d.years * n,\n months: d.months * n,\n days: d.days * n,\n milliseconds: d.milliseconds * n\n };\n} // Conversions\n// \"Rough\" because they are based on average-case Gregorian months/years\n\n\nfunction asRoughYears(dur) {\n return asRoughDays(dur) / 365;\n}\n\nfunction asRoughMonths(dur) {\n return asRoughDays(dur) / 30;\n}\n\nfunction asRoughDays(dur) {\n return asRoughMs(dur) / 864e5;\n}\n\nfunction asRoughMinutes(dur) {\n return asRoughMs(dur) / (1000 * 60);\n}\n\nfunction asRoughSeconds(dur) {\n return asRoughMs(dur) / 1000;\n}\n\nfunction asRoughMs(dur) {\n return dur.years * (365 * 864e5) + dur.months * (30 * 864e5) + dur.days * 864e5 + dur.milliseconds;\n} // Advanced Math\n\n\nfunction wholeDivideDurations(numerator, denominator) {\n var res = null;\n\n for (var i = 0; i < INTERNAL_UNITS.length; i += 1) {\n var unit = INTERNAL_UNITS[i];\n\n if (denominator[unit]) {\n var localRes = numerator[unit] / denominator[unit];\n\n if (!isInt(localRes) || res !== null && res !== localRes) {\n return null;\n }\n\n res = localRes;\n } else if (numerator[unit]) {\n // needs to divide by something but can't!\n return null;\n }\n }\n\n return res;\n}\n\nfunction greatestDurationDenominator(dur) {\n var ms = dur.milliseconds;\n\n if (ms) {\n if (ms % 1000 !== 0) {\n return {\n unit: 'millisecond',\n value: ms\n };\n }\n\n if (ms % (1000 * 60) !== 0) {\n return {\n unit: 'second',\n value: ms / 1000\n };\n }\n\n if (ms % (1000 * 60 * 60) !== 0) {\n return {\n unit: 'minute',\n value: ms / (1000 * 60)\n };\n }\n\n if (ms) {\n return {\n unit: 'hour',\n value: ms / (1000 * 60 * 60)\n };\n }\n }\n\n if (dur.days) {\n if (dur.specifiedWeeks && dur.days % 7 === 0) {\n return {\n unit: 'week',\n value: dur.days / 7\n };\n }\n\n return {\n unit: 'day',\n value: dur.days\n };\n }\n\n if (dur.months) {\n return {\n unit: 'month',\n value: dur.months\n };\n }\n\n if (dur.years) {\n return {\n unit: 'year',\n value: dur.years\n };\n }\n\n return {\n unit: 'millisecond',\n value: 0\n };\n} // timeZoneOffset is in minutes\n\n\nfunction buildIsoString(marker, timeZoneOffset, stripZeroTime) {\n if (stripZeroTime === void 0) {\n stripZeroTime = false;\n }\n\n var s = marker.toISOString();\n s = s.replace('.000', '');\n\n if (stripZeroTime) {\n s = s.replace('T00:00:00Z', '');\n }\n\n if (s.length > 10) {\n // time part wasn't stripped, can add timezone info\n if (timeZoneOffset == null) {\n s = s.replace('Z', '');\n } else if (timeZoneOffset !== 0) {\n s = s.replace('Z', formatTimeZoneOffset(timeZoneOffset, true));\n } // otherwise, its UTC-0 and we want to keep the Z\n\n }\n\n return s;\n} // formats the date, but with no time part\n// TODO: somehow merge with buildIsoString and stripZeroTime\n// TODO: rename. omit \"string\"\n\n\nfunction formatDayString(marker) {\n return marker.toISOString().replace(/T.*$/, '');\n} // TODO: use Date::toISOString and use everything after the T?\n\n\nfunction formatIsoTimeString(marker) {\n return padStart(marker.getUTCHours(), 2) + ':' + padStart(marker.getUTCMinutes(), 2) + ':' + padStart(marker.getUTCSeconds(), 2);\n}\n\nfunction formatTimeZoneOffset(minutes, doIso) {\n if (doIso === void 0) {\n doIso = false;\n }\n\n var sign = minutes < 0 ? '-' : '+';\n var abs = Math.abs(minutes);\n var hours = Math.floor(abs / 60);\n var mins = Math.round(abs % 60);\n\n if (doIso) {\n return sign + padStart(hours, 2) + \":\" + padStart(mins, 2);\n }\n\n return \"GMT\" + sign + hours + (mins ? \":\" + padStart(mins, 2) : '');\n} // TODO: new util arrayify?\n\n\nfunction removeExact(array, exactVal) {\n var removeCnt = 0;\n var i = 0;\n\n while (i < array.length) {\n if (array[i] === exactVal) {\n array.splice(i, 1);\n removeCnt += 1;\n } else {\n i += 1;\n }\n }\n\n return removeCnt;\n}\n\nfunction isArraysEqual(a0, a1, equalityFunc) {\n if (a0 === a1) {\n return true;\n }\n\n var len = a0.length;\n var i;\n\n if (len !== a1.length) {\n // not array? or not same length?\n return false;\n }\n\n for (i = 0; i < len; i += 1) {\n if (!(equalityFunc ? equalityFunc(a0[i], a1[i]) : a0[i] === a1[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction memoize(workerFunc, resEquality, teardownFunc) {\n var currentArgs;\n var currentRes;\n return function () {\n var newArgs = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n\n if (!currentArgs) {\n currentRes = workerFunc.apply(this, newArgs);\n } else if (!isArraysEqual(currentArgs, newArgs)) {\n if (teardownFunc) {\n teardownFunc(currentRes);\n }\n\n var res = workerFunc.apply(this, newArgs);\n\n if (!resEquality || !resEquality(res, currentRes)) {\n currentRes = res;\n }\n }\n\n currentArgs = newArgs;\n return currentRes;\n };\n}\n\nfunction memoizeObjArg(workerFunc, resEquality, teardownFunc) {\n var _this = this;\n\n var currentArg;\n var currentRes;\n return function (newArg) {\n if (!currentArg) {\n currentRes = workerFunc.call(_this, newArg);\n } else if (!isPropsEqual(currentArg, newArg)) {\n if (teardownFunc) {\n teardownFunc(currentRes);\n }\n\n var res = workerFunc.call(_this, newArg);\n\n if (!resEquality || !resEquality(res, currentRes)) {\n currentRes = res;\n }\n }\n\n currentArg = newArg;\n return currentRes;\n };\n}\n\nfunction memoizeArraylike( // used at all?\nworkerFunc, resEquality, teardownFunc) {\n var _this = this;\n\n var currentArgSets = [];\n var currentResults = [];\n return function (newArgSets) {\n var currentLen = currentArgSets.length;\n var newLen = newArgSets.length;\n var i = 0;\n\n for (; i < currentLen; i += 1) {\n if (!newArgSets[i]) {\n // one of the old sets no longer exists\n if (teardownFunc) {\n teardownFunc(currentResults[i]);\n }\n } else if (!isArraysEqual(currentArgSets[i], newArgSets[i])) {\n if (teardownFunc) {\n teardownFunc(currentResults[i]);\n }\n\n var res = workerFunc.apply(_this, newArgSets[i]);\n\n if (!resEquality || !resEquality(res, currentResults[i])) {\n currentResults[i] = res;\n }\n }\n }\n\n for (; i < newLen; i += 1) {\n currentResults[i] = workerFunc.apply(_this, newArgSets[i]);\n }\n\n currentArgSets = newArgSets;\n currentResults.splice(newLen); // remove excess\n\n return currentResults;\n };\n}\n\nfunction memoizeHashlike( // used?\nworkerFunc, resEquality, teardownFunc) {\n var _this = this;\n\n var currentArgHash = {};\n var currentResHash = {};\n return function (newArgHash) {\n var newResHash = {};\n\n for (var key in newArgHash) {\n if (!currentResHash[key]) {\n newResHash[key] = workerFunc.apply(_this, newArgHash[key]);\n } else if (!isArraysEqual(currentArgHash[key], newArgHash[key])) {\n if (teardownFunc) {\n teardownFunc(currentResHash[key]);\n }\n\n var res = workerFunc.apply(_this, newArgHash[key]);\n newResHash[key] = resEquality && resEquality(res, currentResHash[key]) ? currentResHash[key] : res;\n } else {\n newResHash[key] = currentResHash[key];\n }\n }\n\n currentArgHash = newArgHash;\n currentResHash = newResHash;\n return newResHash;\n };\n}\n\nvar EXTENDED_SETTINGS_AND_SEVERITIES = {\n week: 3,\n separator: 0,\n omitZeroMinute: 0,\n meridiem: 0,\n omitCommas: 0\n};\nvar STANDARD_DATE_PROP_SEVERITIES = {\n timeZoneName: 7,\n era: 6,\n year: 5,\n month: 4,\n day: 2,\n weekday: 2,\n hour: 1,\n minute: 1,\n second: 1\n};\nvar MERIDIEM_RE = /\\s*([ap])\\.?m\\.?/i; // eats up leading spaces too\n\nvar COMMA_RE = /,/g; // we need re for globalness\n\nvar MULTI_SPACE_RE = /\\s+/g;\nvar LTR_RE = /\\u200e/g; // control character\n\nvar UTC_RE = /UTC|GMT/;\n\nvar NativeFormatter =\n/** @class */\nfunction () {\n function NativeFormatter(formatSettings) {\n var standardDateProps = {};\n var extendedSettings = {};\n var severity = 0;\n\n for (var name_1 in formatSettings) {\n if (name_1 in EXTENDED_SETTINGS_AND_SEVERITIES) {\n extendedSettings[name_1] = formatSettings[name_1];\n severity = Math.max(EXTENDED_SETTINGS_AND_SEVERITIES[name_1], severity);\n } else {\n standardDateProps[name_1] = formatSettings[name_1];\n\n if (name_1 in STANDARD_DATE_PROP_SEVERITIES) {\n // TODO: what about hour12? no severity\n severity = Math.max(STANDARD_DATE_PROP_SEVERITIES[name_1], severity);\n }\n }\n }\n\n this.standardDateProps = standardDateProps;\n this.extendedSettings = extendedSettings;\n this.severity = severity;\n this.buildFormattingFunc = memoize(buildFormattingFunc);\n }\n\n NativeFormatter.prototype.format = function (date, context) {\n return this.buildFormattingFunc(this.standardDateProps, this.extendedSettings, context)(date);\n };\n\n NativeFormatter.prototype.formatRange = function (start, end, context, betterDefaultSeparator) {\n var _a = this,\n standardDateProps = _a.standardDateProps,\n extendedSettings = _a.extendedSettings;\n\n var diffSeverity = computeMarkerDiffSeverity(start.marker, end.marker, context.calendarSystem);\n\n if (!diffSeverity) {\n return this.format(start, context);\n }\n\n var biggestUnitForPartial = diffSeverity;\n\n if (biggestUnitForPartial > 1 && ( // the two dates are different in a way that's larger scale than time\n standardDateProps.year === 'numeric' || standardDateProps.year === '2-digit') && (standardDateProps.month === 'numeric' || standardDateProps.month === '2-digit') && (standardDateProps.day === 'numeric' || standardDateProps.day === '2-digit')) {\n biggestUnitForPartial = 1; // make it look like the dates are only different in terms of time\n }\n\n var full0 = this.format(start, context);\n var full1 = this.format(end, context);\n\n if (full0 === full1) {\n return full0;\n }\n\n var partialDateProps = computePartialFormattingOptions(standardDateProps, biggestUnitForPartial);\n var partialFormattingFunc = buildFormattingFunc(partialDateProps, extendedSettings, context);\n var partial0 = partialFormattingFunc(start);\n var partial1 = partialFormattingFunc(end);\n var insertion = findCommonInsertion(full0, partial0, full1, partial1);\n var separator = extendedSettings.separator || betterDefaultSeparator || context.defaultSeparator || '';\n\n if (insertion) {\n return insertion.before + partial0 + separator + partial1 + insertion.after;\n }\n\n return full0 + separator + full1;\n };\n\n NativeFormatter.prototype.getLargestUnit = function () {\n switch (this.severity) {\n case 7:\n case 6:\n case 5:\n return 'year';\n\n case 4:\n return 'month';\n\n case 3:\n return 'week';\n\n case 2:\n return 'day';\n\n default:\n return 'time';\n // really?\n }\n };\n\n return NativeFormatter;\n}();\n\nfunction buildFormattingFunc(standardDateProps, extendedSettings, context) {\n var standardDatePropCnt = Object.keys(standardDateProps).length;\n\n if (standardDatePropCnt === 1 && standardDateProps.timeZoneName === 'short') {\n return function (date) {\n return formatTimeZoneOffset(date.timeZoneOffset);\n };\n }\n\n if (standardDatePropCnt === 0 && extendedSettings.week) {\n return function (date) {\n return formatWeekNumber(context.computeWeekNumber(date.marker), context.weekText, context.weekTextLong, context.locale, extendedSettings.week);\n };\n }\n\n return buildNativeFormattingFunc(standardDateProps, extendedSettings, context);\n}\n\nfunction buildNativeFormattingFunc(standardDateProps, extendedSettings, context) {\n standardDateProps = __assign({}, standardDateProps); // copy\n\n extendedSettings = __assign({}, extendedSettings); // copy\n\n sanitizeSettings(standardDateProps, extendedSettings);\n standardDateProps.timeZone = 'UTC'; // we leverage the only guaranteed timeZone for our UTC markers\n\n var normalFormat = new Intl.DateTimeFormat(context.locale.codes, standardDateProps);\n var zeroFormat; // needed?\n\n if (extendedSettings.omitZeroMinute) {\n var zeroProps = __assign({}, standardDateProps);\n\n delete zeroProps.minute; // seconds and ms were already considered in sanitizeSettings\n\n zeroFormat = new Intl.DateTimeFormat(context.locale.codes, zeroProps);\n }\n\n return function (date) {\n var marker = date.marker;\n var format;\n\n if (zeroFormat && !marker.getUTCMinutes()) {\n format = zeroFormat;\n } else {\n format = normalFormat;\n }\n\n var s = format.format(marker);\n return postProcess(s, date, standardDateProps, extendedSettings, context);\n };\n}\n\nfunction sanitizeSettings(standardDateProps, extendedSettings) {\n // deal with a browser inconsistency where formatting the timezone\n // requires that the hour/minute be present.\n if (standardDateProps.timeZoneName) {\n if (!standardDateProps.hour) {\n standardDateProps.hour = '2-digit';\n }\n\n if (!standardDateProps.minute) {\n standardDateProps.minute = '2-digit';\n }\n } // only support short timezone names\n\n\n if (standardDateProps.timeZoneName === 'long') {\n standardDateProps.timeZoneName = 'short';\n } // if requesting to display seconds, MUST display minutes\n\n\n if (extendedSettings.omitZeroMinute && (standardDateProps.second || standardDateProps.millisecond)) {\n delete extendedSettings.omitZeroMinute;\n }\n}\n\nfunction postProcess(s, date, standardDateProps, extendedSettings, context) {\n s = s.replace(LTR_RE, ''); // remove left-to-right control chars. do first. good for other regexes\n\n if (standardDateProps.timeZoneName === 'short') {\n s = injectTzoStr(s, context.timeZone === 'UTC' || date.timeZoneOffset == null ? 'UTC' : // important to normalize for IE, which does \"GMT\"\n formatTimeZoneOffset(date.timeZoneOffset));\n }\n\n if (extendedSettings.omitCommas) {\n s = s.replace(COMMA_RE, '').trim();\n }\n\n if (extendedSettings.omitZeroMinute) {\n s = s.replace(':00', ''); // zeroFormat doesn't always achieve this\n } // ^ do anything that might create adjacent spaces before this point,\n // because MERIDIEM_RE likes to eat up loading spaces\n\n\n if (extendedSettings.meridiem === false) {\n s = s.replace(MERIDIEM_RE, '').trim();\n } else if (extendedSettings.meridiem === 'narrow') {\n // a/p\n s = s.replace(MERIDIEM_RE, function (m0, m1) {\n return m1.toLocaleLowerCase();\n });\n } else if (extendedSettings.meridiem === 'short') {\n // am/pm\n s = s.replace(MERIDIEM_RE, function (m0, m1) {\n return m1.toLocaleLowerCase() + \"m\";\n });\n } else if (extendedSettings.meridiem === 'lowercase') {\n // other meridiem transformers already converted to lowercase\n s = s.replace(MERIDIEM_RE, function (m0) {\n return m0.toLocaleLowerCase();\n });\n }\n\n s = s.replace(MULTI_SPACE_RE, ' ');\n s = s.trim();\n return s;\n}\n\nfunction injectTzoStr(s, tzoStr) {\n var replaced = false;\n s = s.replace(UTC_RE, function () {\n replaced = true;\n return tzoStr;\n }); // IE11 doesn't include UTC/GMT in the original string, so append to end\n\n if (!replaced) {\n s += \" \" + tzoStr;\n }\n\n return s;\n}\n\nfunction formatWeekNumber(num, weekText, weekTextLong, locale, display) {\n var parts = [];\n\n if (display === 'long') {\n parts.push(weekTextLong);\n } else if (display === 'short' || display === 'narrow') {\n parts.push(weekText);\n }\n\n if (display === 'long' || display === 'short') {\n parts.push(' ');\n }\n\n parts.push(locale.simpleNumberFormat.format(num));\n\n if (locale.options.direction === 'rtl') {\n // TODO: use control characters instead?\n parts.reverse();\n }\n\n return parts.join('');\n} // Range Formatting Utils\n// 0 = exactly the same\n// 1 = different by time\n// and bigger\n\n\nfunction computeMarkerDiffSeverity(d0, d1, ca) {\n if (ca.getMarkerYear(d0) !== ca.getMarkerYear(d1)) {\n return 5;\n }\n\n if (ca.getMarkerMonth(d0) !== ca.getMarkerMonth(d1)) {\n return 4;\n }\n\n if (ca.getMarkerDay(d0) !== ca.getMarkerDay(d1)) {\n return 2;\n }\n\n if (timeAsMs(d0) !== timeAsMs(d1)) {\n return 1;\n }\n\n return 0;\n}\n\nfunction computePartialFormattingOptions(options, biggestUnit) {\n var partialOptions = {};\n\n for (var name_2 in options) {\n if (!(name_2 in STANDARD_DATE_PROP_SEVERITIES) || // not a date part prop (like timeZone)\n STANDARD_DATE_PROP_SEVERITIES[name_2] <= biggestUnit) {\n partialOptions[name_2] = options[name_2];\n }\n }\n\n return partialOptions;\n}\n\nfunction findCommonInsertion(full0, partial0, full1, partial1) {\n var i0 = 0;\n\n while (i0 < full0.length) {\n var found0 = full0.indexOf(partial0, i0);\n\n if (found0 === -1) {\n break;\n }\n\n var before0 = full0.substr(0, found0);\n i0 = found0 + partial0.length;\n var after0 = full0.substr(i0);\n var i1 = 0;\n\n while (i1 < full1.length) {\n var found1 = full1.indexOf(partial1, i1);\n\n if (found1 === -1) {\n break;\n }\n\n var before1 = full1.substr(0, found1);\n i1 = found1 + partial1.length;\n var after1 = full1.substr(i1);\n\n if (before0 === before1 && after0 === after1) {\n return {\n before: before0,\n after: after0\n };\n }\n }\n }\n\n return null;\n}\n\nfunction expandZonedMarker(dateInfo, calendarSystem) {\n var a = calendarSystem.markerToArray(dateInfo.marker);\n return {\n marker: dateInfo.marker,\n timeZoneOffset: dateInfo.timeZoneOffset,\n array: a,\n year: a[0],\n month: a[1],\n day: a[2],\n hour: a[3],\n minute: a[4],\n second: a[5],\n millisecond: a[6]\n };\n}\n\nfunction createVerboseFormattingArg(start, end, context, betterDefaultSeparator) {\n var startInfo = expandZonedMarker(start, context.calendarSystem);\n var endInfo = end ? expandZonedMarker(end, context.calendarSystem) : null;\n return {\n date: startInfo,\n start: startInfo,\n end: endInfo,\n timeZone: context.timeZone,\n localeCodes: context.locale.codes,\n defaultSeparator: betterDefaultSeparator || context.defaultSeparator\n };\n}\n/*\nTODO: fix the terminology of \"formatter\" vs \"formatting func\"\n*/\n\n/*\nAt the time of instantiation, this object does not know which cmd-formatting system it will use.\nIt receives this at the time of formatting, as a setting.\n*/\n\n\nvar CmdFormatter =\n/** @class */\nfunction () {\n function CmdFormatter(cmdStr) {\n this.cmdStr = cmdStr;\n }\n\n CmdFormatter.prototype.format = function (date, context, betterDefaultSeparator) {\n return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(date, null, context, betterDefaultSeparator));\n };\n\n CmdFormatter.prototype.formatRange = function (start, end, context, betterDefaultSeparator) {\n return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(start, end, context, betterDefaultSeparator));\n };\n\n return CmdFormatter;\n}();\n\nvar FuncFormatter =\n/** @class */\nfunction () {\n function FuncFormatter(func) {\n this.func = func;\n }\n\n FuncFormatter.prototype.format = function (date, context, betterDefaultSeparator) {\n return this.func(createVerboseFormattingArg(date, null, context, betterDefaultSeparator));\n };\n\n FuncFormatter.prototype.formatRange = function (start, end, context, betterDefaultSeparator) {\n return this.func(createVerboseFormattingArg(start, end, context, betterDefaultSeparator));\n };\n\n return FuncFormatter;\n}();\n\nfunction createFormatter(input) {\n if (_typeof(input) === 'object' && input) {\n // non-null object\n return new NativeFormatter(input);\n }\n\n if (typeof input === 'string') {\n return new CmdFormatter(input);\n }\n\n if (typeof input === 'function') {\n return new FuncFormatter(input);\n }\n\n return null;\n} // base options\n// ------------\n\n\nvar BASE_OPTION_REFINERS = {\n navLinkDayClick: identity,\n navLinkWeekClick: identity,\n duration: createDuration,\n bootstrapFontAwesome: identity,\n buttonIcons: identity,\n customButtons: identity,\n defaultAllDayEventDuration: createDuration,\n defaultTimedEventDuration: createDuration,\n nextDayThreshold: createDuration,\n scrollTime: createDuration,\n scrollTimeReset: Boolean,\n slotMinTime: createDuration,\n slotMaxTime: createDuration,\n dayPopoverFormat: createFormatter,\n slotDuration: createDuration,\n snapDuration: createDuration,\n headerToolbar: identity,\n footerToolbar: identity,\n defaultRangeSeparator: String,\n titleRangeSeparator: String,\n forceEventDuration: Boolean,\n dayHeaders: Boolean,\n dayHeaderFormat: createFormatter,\n dayHeaderClassNames: identity,\n dayHeaderContent: identity,\n dayHeaderDidMount: identity,\n dayHeaderWillUnmount: identity,\n dayCellClassNames: identity,\n dayCellContent: identity,\n dayCellDidMount: identity,\n dayCellWillUnmount: identity,\n initialView: String,\n aspectRatio: Number,\n weekends: Boolean,\n weekNumberCalculation: identity,\n weekNumbers: Boolean,\n weekNumberClassNames: identity,\n weekNumberContent: identity,\n weekNumberDidMount: identity,\n weekNumberWillUnmount: identity,\n editable: Boolean,\n viewClassNames: identity,\n viewDidMount: identity,\n viewWillUnmount: identity,\n nowIndicator: Boolean,\n nowIndicatorClassNames: identity,\n nowIndicatorContent: identity,\n nowIndicatorDidMount: identity,\n nowIndicatorWillUnmount: identity,\n showNonCurrentDates: Boolean,\n lazyFetching: Boolean,\n startParam: String,\n endParam: String,\n timeZoneParam: String,\n timeZone: String,\n locales: identity,\n locale: identity,\n themeSystem: String,\n dragRevertDuration: Number,\n dragScroll: Boolean,\n allDayMaintainDuration: Boolean,\n unselectAuto: Boolean,\n dropAccept: identity,\n eventOrder: parseFieldSpecs,\n eventOrderStrict: Boolean,\n handleWindowResize: Boolean,\n windowResizeDelay: Number,\n longPressDelay: Number,\n eventDragMinDistance: Number,\n expandRows: Boolean,\n height: identity,\n contentHeight: identity,\n direction: String,\n weekNumberFormat: createFormatter,\n eventResizableFromStart: Boolean,\n displayEventTime: Boolean,\n displayEventEnd: Boolean,\n weekText: String,\n weekTextLong: String,\n progressiveEventRendering: Boolean,\n businessHours: identity,\n initialDate: identity,\n now: identity,\n eventDataTransform: identity,\n stickyHeaderDates: identity,\n stickyFooterScrollbar: identity,\n viewHeight: identity,\n defaultAllDay: Boolean,\n eventSourceFailure: identity,\n eventSourceSuccess: identity,\n eventDisplay: String,\n eventStartEditable: Boolean,\n eventDurationEditable: Boolean,\n eventOverlap: identity,\n eventConstraint: identity,\n eventAllow: identity,\n eventBackgroundColor: String,\n eventBorderColor: String,\n eventTextColor: String,\n eventColor: String,\n eventClassNames: identity,\n eventContent: identity,\n eventDidMount: identity,\n eventWillUnmount: identity,\n selectConstraint: identity,\n selectOverlap: identity,\n selectAllow: identity,\n droppable: Boolean,\n unselectCancel: String,\n slotLabelFormat: identity,\n slotLaneClassNames: identity,\n slotLaneContent: identity,\n slotLaneDidMount: identity,\n slotLaneWillUnmount: identity,\n slotLabelClassNames: identity,\n slotLabelContent: identity,\n slotLabelDidMount: identity,\n slotLabelWillUnmount: identity,\n dayMaxEvents: identity,\n dayMaxEventRows: identity,\n dayMinWidth: Number,\n slotLabelInterval: createDuration,\n allDayText: String,\n allDayClassNames: identity,\n allDayContent: identity,\n allDayDidMount: identity,\n allDayWillUnmount: identity,\n slotMinWidth: Number,\n navLinks: Boolean,\n eventTimeFormat: createFormatter,\n rerenderDelay: Number,\n moreLinkText: identity,\n moreLinkHint: identity,\n selectMinDistance: Number,\n selectable: Boolean,\n selectLongPressDelay: Number,\n eventLongPressDelay: Number,\n selectMirror: Boolean,\n eventMaxStack: Number,\n eventMinHeight: Number,\n eventMinWidth: Number,\n eventShortHeight: Number,\n slotEventOverlap: Boolean,\n plugins: identity,\n firstDay: Number,\n dayCount: Number,\n dateAlignment: String,\n dateIncrement: createDuration,\n hiddenDays: identity,\n monthMode: Boolean,\n fixedWeekCount: Boolean,\n validRange: identity,\n visibleRange: identity,\n titleFormat: identity,\n eventInteractive: Boolean,\n // only used by list-view, but languages define the value, so we need it in base options\n noEventsText: String,\n viewHint: identity,\n navLinkHint: identity,\n closeHint: String,\n timeHint: String,\n eventHint: String,\n moreLinkClick: identity,\n moreLinkClassNames: identity,\n moreLinkContent: identity,\n moreLinkDidMount: identity,\n moreLinkWillUnmount: identity\n}; // do NOT give a type here. need `typeof BASE_OPTION_DEFAULTS` to give real results.\n// raw values.\n\nvar BASE_OPTION_DEFAULTS = {\n eventDisplay: 'auto',\n defaultRangeSeparator: ' - ',\n titleRangeSeparator: \" \\u2013 \",\n defaultTimedEventDuration: '01:00:00',\n defaultAllDayEventDuration: {\n day: 1\n },\n forceEventDuration: false,\n nextDayThreshold: '00:00:00',\n dayHeaders: true,\n initialView: '',\n aspectRatio: 1.35,\n headerToolbar: {\n start: 'title',\n center: '',\n end: 'today prev,next'\n },\n weekends: true,\n weekNumbers: false,\n weekNumberCalculation: 'local',\n editable: false,\n nowIndicator: false,\n scrollTime: '06:00:00',\n scrollTimeReset: true,\n slotMinTime: '00:00:00',\n slotMaxTime: '24:00:00',\n showNonCurrentDates: true,\n lazyFetching: true,\n startParam: 'start',\n endParam: 'end',\n timeZoneParam: 'timeZone',\n timeZone: 'local',\n locales: [],\n locale: '',\n themeSystem: 'standard',\n dragRevertDuration: 500,\n dragScroll: true,\n allDayMaintainDuration: false,\n unselectAuto: true,\n dropAccept: '*',\n eventOrder: 'start,-duration,allDay,title',\n dayPopoverFormat: {\n month: 'long',\n day: 'numeric',\n year: 'numeric'\n },\n handleWindowResize: true,\n windowResizeDelay: 100,\n longPressDelay: 1000,\n eventDragMinDistance: 5,\n expandRows: false,\n navLinks: false,\n selectable: false,\n eventMinHeight: 15,\n eventMinWidth: 30,\n eventShortHeight: 30\n}; // calendar listeners\n// ------------------\n\nvar CALENDAR_LISTENER_REFINERS = {\n datesSet: identity,\n eventsSet: identity,\n eventAdd: identity,\n eventChange: identity,\n eventRemove: identity,\n windowResize: identity,\n eventClick: identity,\n eventMouseEnter: identity,\n eventMouseLeave: identity,\n select: identity,\n unselect: identity,\n loading: identity,\n // internal\n _unmount: identity,\n _beforeprint: identity,\n _afterprint: identity,\n _noEventDrop: identity,\n _noEventResize: identity,\n _resize: identity,\n _scrollRequest: identity\n}; // calendar-specific options\n// -------------------------\n\nvar CALENDAR_OPTION_REFINERS = {\n buttonText: identity,\n buttonHints: identity,\n views: identity,\n plugins: identity,\n initialEvents: identity,\n events: identity,\n eventSources: identity\n};\nvar COMPLEX_OPTION_COMPARATORS = {\n headerToolbar: isBoolComplexEqual,\n footerToolbar: isBoolComplexEqual,\n buttonText: isBoolComplexEqual,\n buttonHints: isBoolComplexEqual,\n buttonIcons: isBoolComplexEqual\n};\n\nfunction isBoolComplexEqual(a, b) {\n if (_typeof(a) === 'object' && _typeof(b) === 'object' && a && b) {\n // both non-null objects\n return isPropsEqual(a, b);\n }\n\n return a === b;\n} // view-specific options\n// ---------------------\n\n\nvar VIEW_OPTION_REFINERS = {\n type: String,\n component: identity,\n buttonText: String,\n buttonTextKey: String,\n dateProfileGeneratorClass: identity,\n usesMinMaxTime: Boolean,\n classNames: identity,\n content: identity,\n didMount: identity,\n willUnmount: identity\n}; // util funcs\n// ----------------------------------------------------------------------------------------------------\n\nfunction mergeRawOptions(optionSets) {\n return mergeProps(optionSets, COMPLEX_OPTION_COMPARATORS);\n}\n\nfunction refineProps(input, refiners) {\n var refined = {};\n var extra = {};\n\n for (var propName in refiners) {\n if (propName in input) {\n refined[propName] = refiners[propName](input[propName]);\n }\n }\n\n for (var propName in input) {\n if (!(propName in refiners)) {\n extra[propName] = input[propName];\n }\n }\n\n return {\n refined: refined,\n extra: extra\n };\n}\n\nfunction identity(raw) {\n return raw;\n}\n\nfunction parseEvents(rawEvents, eventSource, context, allowOpenRange) {\n var eventStore = createEmptyEventStore();\n var eventRefiners = buildEventRefiners(context);\n\n for (var _i = 0, rawEvents_1 = rawEvents; _i < rawEvents_1.length; _i++) {\n var rawEvent = rawEvents_1[_i];\n var tuple = parseEvent(rawEvent, eventSource, context, allowOpenRange, eventRefiners);\n\n if (tuple) {\n eventTupleToStore(tuple, eventStore);\n }\n }\n\n return eventStore;\n}\n\nfunction eventTupleToStore(tuple, eventStore) {\n if (eventStore === void 0) {\n eventStore = createEmptyEventStore();\n }\n\n eventStore.defs[tuple.def.defId] = tuple.def;\n\n if (tuple.instance) {\n eventStore.instances[tuple.instance.instanceId] = tuple.instance;\n }\n\n return eventStore;\n} // retrieves events that have the same groupId as the instance specified by `instanceId`\n// or they are the same as the instance.\n// why might instanceId not be in the store? an event from another calendar?\n\n\nfunction getRelevantEvents(eventStore, instanceId) {\n var instance = eventStore.instances[instanceId];\n\n if (instance) {\n var def_1 = eventStore.defs[instance.defId]; // get events/instances with same group\n\n var newStore = filterEventStoreDefs(eventStore, function (lookDef) {\n return isEventDefsGrouped(def_1, lookDef);\n }); // add the original\n // TODO: wish we could use eventTupleToStore or something like it\n\n newStore.defs[def_1.defId] = def_1;\n newStore.instances[instance.instanceId] = instance;\n return newStore;\n }\n\n return createEmptyEventStore();\n}\n\nfunction isEventDefsGrouped(def0, def1) {\n return Boolean(def0.groupId && def0.groupId === def1.groupId);\n}\n\nfunction createEmptyEventStore() {\n return {\n defs: {},\n instances: {}\n };\n}\n\nfunction mergeEventStores(store0, store1) {\n return {\n defs: __assign(__assign({}, store0.defs), store1.defs),\n instances: __assign(__assign({}, store0.instances), store1.instances)\n };\n}\n\nfunction filterEventStoreDefs(eventStore, filterFunc) {\n var defs = filterHash(eventStore.defs, filterFunc);\n var instances = filterHash(eventStore.instances, function (instance) {\n return defs[instance.defId] // still exists?\n ;\n });\n return {\n defs: defs,\n instances: instances\n };\n}\n\nfunction excludeSubEventStore(master, sub) {\n var defs = master.defs,\n instances = master.instances;\n var filteredDefs = {};\n var filteredInstances = {};\n\n for (var defId in defs) {\n if (!sub.defs[defId]) {\n // not explicitly excluded\n filteredDefs[defId] = defs[defId];\n }\n }\n\n for (var instanceId in instances) {\n if (!sub.instances[instanceId] && // not explicitly excluded\n filteredDefs[instances[instanceId].defId] // def wasn't filtered away\n ) {\n filteredInstances[instanceId] = instances[instanceId];\n }\n }\n\n return {\n defs: filteredDefs,\n instances: filteredInstances\n };\n}\n\nfunction normalizeConstraint(input, context) {\n if (Array.isArray(input)) {\n return parseEvents(input, null, context, true); // allowOpenRange=true\n }\n\n if (_typeof(input) === 'object' && input) {\n // non-null object\n return parseEvents([input], null, context, true); // allowOpenRange=true\n }\n\n if (input != null) {\n return String(input);\n }\n\n return null;\n}\n\nfunction parseClassNames(raw) {\n if (Array.isArray(raw)) {\n return raw;\n }\n\n if (typeof raw === 'string') {\n return raw.split(/\\s+/);\n }\n\n return [];\n} // TODO: better called \"EventSettings\" or \"EventConfig\"\n// TODO: move this file into structs\n// TODO: separate constraint/overlap/allow, because selection uses only that, not other props\n\n\nvar EVENT_UI_REFINERS = {\n display: String,\n editable: Boolean,\n startEditable: Boolean,\n durationEditable: Boolean,\n constraint: identity,\n overlap: identity,\n allow: identity,\n className: parseClassNames,\n classNames: parseClassNames,\n color: String,\n backgroundColor: String,\n borderColor: String,\n textColor: String\n};\nvar EMPTY_EVENT_UI = {\n display: null,\n startEditable: null,\n durationEditable: null,\n constraints: [],\n overlap: null,\n allows: [],\n backgroundColor: '',\n borderColor: '',\n textColor: '',\n classNames: []\n};\n\nfunction createEventUi(refined, context) {\n var constraint = normalizeConstraint(refined.constraint, context);\n return {\n display: refined.display || null,\n startEditable: refined.startEditable != null ? refined.startEditable : refined.editable,\n durationEditable: refined.durationEditable != null ? refined.durationEditable : refined.editable,\n constraints: constraint != null ? [constraint] : [],\n overlap: refined.overlap != null ? refined.overlap : null,\n allows: refined.allow != null ? [refined.allow] : [],\n backgroundColor: refined.backgroundColor || refined.color || '',\n borderColor: refined.borderColor || refined.color || '',\n textColor: refined.textColor || '',\n classNames: (refined.className || []).concat(refined.classNames || []) // join singular and plural\n\n };\n} // TODO: prevent against problems with <2 args!\n\n\nfunction combineEventUis(uis) {\n return uis.reduce(combineTwoEventUis, EMPTY_EVENT_UI);\n}\n\nfunction combineTwoEventUis(item0, item1) {\n return {\n display: item1.display != null ? item1.display : item0.display,\n startEditable: item1.startEditable != null ? item1.startEditable : item0.startEditable,\n durationEditable: item1.durationEditable != null ? item1.durationEditable : item0.durationEditable,\n constraints: item0.constraints.concat(item1.constraints),\n overlap: typeof item1.overlap === 'boolean' ? item1.overlap : item0.overlap,\n allows: item0.allows.concat(item1.allows),\n backgroundColor: item1.backgroundColor || item0.backgroundColor,\n borderColor: item1.borderColor || item0.borderColor,\n textColor: item1.textColor || item0.textColor,\n classNames: item0.classNames.concat(item1.classNames)\n };\n}\n\nvar EVENT_NON_DATE_REFINERS = {\n id: String,\n groupId: String,\n title: String,\n url: String,\n interactive: Boolean\n};\nvar EVENT_DATE_REFINERS = {\n start: identity,\n end: identity,\n date: identity,\n allDay: Boolean\n};\n\nvar EVENT_REFINERS = __assign(__assign(__assign({}, EVENT_NON_DATE_REFINERS), EVENT_DATE_REFINERS), {\n extendedProps: identity\n});\n\nfunction parseEvent(raw, eventSource, context, allowOpenRange, refiners) {\n if (refiners === void 0) {\n refiners = buildEventRefiners(context);\n }\n\n var _a = refineEventDef(raw, context, refiners),\n refined = _a.refined,\n extra = _a.extra;\n\n var defaultAllDay = computeIsDefaultAllDay(eventSource, context);\n var recurringRes = parseRecurring(refined, defaultAllDay, context.dateEnv, context.pluginHooks.recurringTypes);\n\n if (recurringRes) {\n var def = parseEventDef(refined, extra, eventSource ? eventSource.sourceId : '', recurringRes.allDay, Boolean(recurringRes.duration), context);\n def.recurringDef = {\n typeId: recurringRes.typeId,\n typeData: recurringRes.typeData,\n duration: recurringRes.duration\n };\n return {\n def: def,\n instance: null\n };\n }\n\n var singleRes = parseSingle(refined, defaultAllDay, context, allowOpenRange);\n\n if (singleRes) {\n var def = parseEventDef(refined, extra, eventSource ? eventSource.sourceId : '', singleRes.allDay, singleRes.hasEnd, context);\n var instance = createEventInstance(def.defId, singleRes.range, singleRes.forcedStartTzo, singleRes.forcedEndTzo);\n return {\n def: def,\n instance: instance\n };\n }\n\n return null;\n}\n\nfunction refineEventDef(raw, context, refiners) {\n if (refiners === void 0) {\n refiners = buildEventRefiners(context);\n }\n\n return refineProps(raw, refiners);\n}\n\nfunction buildEventRefiners(context) {\n return __assign(__assign(__assign({}, EVENT_UI_REFINERS), EVENT_REFINERS), context.pluginHooks.eventRefiners);\n}\n/*\nWill NOT populate extendedProps with the leftover properties.\nWill NOT populate date-related props.\n*/\n\n\nfunction parseEventDef(refined, extra, sourceId, allDay, hasEnd, context) {\n var def = {\n title: refined.title || '',\n groupId: refined.groupId || '',\n publicId: refined.id || '',\n url: refined.url || '',\n recurringDef: null,\n defId: guid(),\n sourceId: sourceId,\n allDay: allDay,\n hasEnd: hasEnd,\n interactive: refined.interactive,\n ui: createEventUi(refined, context),\n extendedProps: __assign(__assign({}, refined.extendedProps || {}), extra)\n };\n\n for (var _i = 0, _a = context.pluginHooks.eventDefMemberAdders; _i < _a.length; _i++) {\n var memberAdder = _a[_i];\n\n __assign(def, memberAdder(refined));\n } // help out EventApi from having user modify props\n\n\n Object.freeze(def.ui.classNames);\n Object.freeze(def.extendedProps);\n return def;\n}\n\nfunction parseSingle(refined, defaultAllDay, context, allowOpenRange) {\n var allDay = refined.allDay;\n var startMeta;\n var startMarker = null;\n var hasEnd = false;\n var endMeta;\n var endMarker = null;\n var startInput = refined.start != null ? refined.start : refined.date;\n startMeta = context.dateEnv.createMarkerMeta(startInput);\n\n if (startMeta) {\n startMarker = startMeta.marker;\n } else if (!allowOpenRange) {\n return null;\n }\n\n if (refined.end != null) {\n endMeta = context.dateEnv.createMarkerMeta(refined.end);\n }\n\n if (allDay == null) {\n if (defaultAllDay != null) {\n allDay = defaultAllDay;\n } else {\n // fall back to the date props LAST\n allDay = (!startMeta || startMeta.isTimeUnspecified) && (!endMeta || endMeta.isTimeUnspecified);\n }\n }\n\n if (allDay && startMarker) {\n startMarker = startOfDay(startMarker);\n }\n\n if (endMeta) {\n endMarker = endMeta.marker;\n\n if (allDay) {\n endMarker = startOfDay(endMarker);\n }\n\n if (startMarker && endMarker <= startMarker) {\n endMarker = null;\n }\n }\n\n if (endMarker) {\n hasEnd = true;\n } else if (!allowOpenRange) {\n hasEnd = context.options.forceEventDuration || false;\n endMarker = context.dateEnv.add(startMarker, allDay ? context.options.defaultAllDayEventDuration : context.options.defaultTimedEventDuration);\n }\n\n return {\n allDay: allDay,\n hasEnd: hasEnd,\n range: {\n start: startMarker,\n end: endMarker\n },\n forcedStartTzo: startMeta ? startMeta.forcedTzo : null,\n forcedEndTzo: endMeta ? endMeta.forcedTzo : null\n };\n}\n\nfunction computeIsDefaultAllDay(eventSource, context) {\n var res = null;\n\n if (eventSource) {\n res = eventSource.defaultAllDay;\n }\n\n if (res == null) {\n res = context.options.defaultAllDay;\n }\n\n return res;\n}\n/* Date stuff that doesn't belong in datelib core\n----------------------------------------------------------------------------------------------------------------------*/\n// given a timed range, computes an all-day range that has the same exact duration,\n// but whose start time is aligned with the start of the day.\n\n\nfunction computeAlignedDayRange(timedRange) {\n var dayCnt = Math.floor(diffDays(timedRange.start, timedRange.end)) || 1;\n var start = startOfDay(timedRange.start);\n var end = addDays(start, dayCnt);\n return {\n start: start,\n end: end\n };\n} // given a timed range, computes an all-day range based on how for the end date bleeds into the next day\n// TODO: give nextDayThreshold a default arg\n\n\nfunction computeVisibleDayRange(timedRange, nextDayThreshold) {\n if (nextDayThreshold === void 0) {\n nextDayThreshold = createDuration(0);\n }\n\n var startDay = null;\n var endDay = null;\n\n if (timedRange.end) {\n endDay = startOfDay(timedRange.end);\n var endTimeMS = timedRange.end.valueOf() - endDay.valueOf(); // # of milliseconds into `endDay`\n // If the end time is actually inclusively part of the next day and is equal to or\n // beyond the next day threshold, adjust the end to be the exclusive end of `endDay`.\n // Otherwise, leaving it as inclusive will cause it to exclude `endDay`.\n\n if (endTimeMS && endTimeMS >= asRoughMs(nextDayThreshold)) {\n endDay = addDays(endDay, 1);\n }\n }\n\n if (timedRange.start) {\n startDay = startOfDay(timedRange.start); // the beginning of the day the range starts\n // If end is within `startDay` but not past nextDayThreshold, assign the default duration of one day.\n\n if (endDay && endDay <= startDay) {\n endDay = addDays(startDay, 1);\n }\n }\n\n return {\n start: startDay,\n end: endDay\n };\n} // spans from one day into another?\n\n\nfunction isMultiDayRange(range) {\n var visibleRange = computeVisibleDayRange(range);\n return diffDays(visibleRange.start, visibleRange.end) > 1;\n}\n\nfunction diffDates(date0, date1, dateEnv, largeUnit) {\n if (largeUnit === 'year') {\n return createDuration(dateEnv.diffWholeYears(date0, date1), 'year');\n }\n\n if (largeUnit === 'month') {\n return createDuration(dateEnv.diffWholeMonths(date0, date1), 'month');\n }\n\n return diffDayAndTime(date0, date1); // returns a duration\n}\n\nfunction parseRange(input, dateEnv) {\n var start = null;\n var end = null;\n\n if (input.start) {\n start = dateEnv.createMarker(input.start);\n }\n\n if (input.end) {\n end = dateEnv.createMarker(input.end);\n }\n\n if (!start && !end) {\n return null;\n }\n\n if (start && end && end < start) {\n return null;\n }\n\n return {\n start: start,\n end: end\n };\n} // SIDE-EFFECT: will mutate ranges.\n// Will return a new array result.\n\n\nfunction invertRanges(ranges, constraintRange) {\n var invertedRanges = [];\n var start = constraintRange.start; // the end of the previous range. the start of the new range\n\n var i;\n var dateRange; // ranges need to be in order. required for our date-walking algorithm\n\n ranges.sort(compareRanges);\n\n for (i = 0; i < ranges.length; i += 1) {\n dateRange = ranges[i]; // add the span of time before the event (if there is any)\n\n if (dateRange.start > start) {\n // compare millisecond time (skip any ambig logic)\n invertedRanges.push({\n start: start,\n end: dateRange.start\n });\n }\n\n if (dateRange.end > start) {\n start = dateRange.end;\n }\n } // add the span of time after the last event (if there is any)\n\n\n if (start < constraintRange.end) {\n // compare millisecond time (skip any ambig logic)\n invertedRanges.push({\n start: start,\n end: constraintRange.end\n });\n }\n\n return invertedRanges;\n}\n\nfunction compareRanges(range0, range1) {\n return range0.start.valueOf() - range1.start.valueOf(); // earlier ranges go first\n}\n\nfunction intersectRanges(range0, range1) {\n var start = range0.start,\n end = range0.end;\n var newRange = null;\n\n if (range1.start !== null) {\n if (start === null) {\n start = range1.start;\n } else {\n start = new Date(Math.max(start.valueOf(), range1.start.valueOf()));\n }\n }\n\n if (range1.end != null) {\n if (end === null) {\n end = range1.end;\n } else {\n end = new Date(Math.min(end.valueOf(), range1.end.valueOf()));\n }\n }\n\n if (start === null || end === null || start < end) {\n newRange = {\n start: start,\n end: end\n };\n }\n\n return newRange;\n}\n\nfunction rangesEqual(range0, range1) {\n return (range0.start === null ? null : range0.start.valueOf()) === (range1.start === null ? null : range1.start.valueOf()) && (range0.end === null ? null : range0.end.valueOf()) === (range1.end === null ? null : range1.end.valueOf());\n}\n\nfunction rangesIntersect(range0, range1) {\n return (range0.end === null || range1.start === null || range0.end > range1.start) && (range0.start === null || range1.end === null || range0.start < range1.end);\n}\n\nfunction rangeContainsRange(outerRange, innerRange) {\n return (outerRange.start === null || innerRange.start !== null && innerRange.start >= outerRange.start) && (outerRange.end === null || innerRange.end !== null && innerRange.end <= outerRange.end);\n}\n\nfunction rangeContainsMarker(range, date) {\n return (range.start === null || date >= range.start) && (range.end === null || date < range.end);\n} // If the given date is not within the given range, move it inside.\n// (If it's past the end, make it one millisecond before the end).\n\n\nfunction constrainMarkerToRange(date, range) {\n if (range.start != null && date < range.start) {\n return range.start;\n }\n\n if (range.end != null && date >= range.end) {\n return new Date(range.end.valueOf() - 1);\n }\n\n return date;\n}\n/*\nSpecifying nextDayThreshold signals that all-day ranges should be sliced.\n*/\n\n\nfunction sliceEventStore(eventStore, eventUiBases, framingRange, nextDayThreshold) {\n var inverseBgByGroupId = {};\n var inverseBgByDefId = {};\n var defByGroupId = {};\n var bgRanges = [];\n var fgRanges = [];\n var eventUis = compileEventUis(eventStore.defs, eventUiBases);\n\n for (var defId in eventStore.defs) {\n var def = eventStore.defs[defId];\n var ui = eventUis[def.defId];\n\n if (ui.display === 'inverse-background') {\n if (def.groupId) {\n inverseBgByGroupId[def.groupId] = [];\n\n if (!defByGroupId[def.groupId]) {\n defByGroupId[def.groupId] = def;\n }\n } else {\n inverseBgByDefId[defId] = [];\n }\n }\n }\n\n for (var instanceId in eventStore.instances) {\n var instance = eventStore.instances[instanceId];\n var def = eventStore.defs[instance.defId];\n var ui = eventUis[def.defId];\n var origRange = instance.range;\n var normalRange = !def.allDay && nextDayThreshold ? computeVisibleDayRange(origRange, nextDayThreshold) : origRange;\n var slicedRange = intersectRanges(normalRange, framingRange);\n\n if (slicedRange) {\n if (ui.display === 'inverse-background') {\n if (def.groupId) {\n inverseBgByGroupId[def.groupId].push(slicedRange);\n } else {\n inverseBgByDefId[instance.defId].push(slicedRange);\n }\n } else if (ui.display !== 'none') {\n (ui.display === 'background' ? bgRanges : fgRanges).push({\n def: def,\n ui: ui,\n instance: instance,\n range: slicedRange,\n isStart: normalRange.start && normalRange.start.valueOf() === slicedRange.start.valueOf(),\n isEnd: normalRange.end && normalRange.end.valueOf() === slicedRange.end.valueOf()\n });\n }\n }\n }\n\n for (var groupId in inverseBgByGroupId) {\n // BY GROUP\n var ranges = inverseBgByGroupId[groupId];\n var invertedRanges = invertRanges(ranges, framingRange);\n\n for (var _i = 0, invertedRanges_1 = invertedRanges; _i < invertedRanges_1.length; _i++) {\n var invertedRange = invertedRanges_1[_i];\n var def = defByGroupId[groupId];\n var ui = eventUis[def.defId];\n bgRanges.push({\n def: def,\n ui: ui,\n instance: null,\n range: invertedRange,\n isStart: false,\n isEnd: false\n });\n }\n }\n\n for (var defId in inverseBgByDefId) {\n var ranges = inverseBgByDefId[defId];\n var invertedRanges = invertRanges(ranges, framingRange);\n\n for (var _a = 0, invertedRanges_2 = invertedRanges; _a < invertedRanges_2.length; _a++) {\n var invertedRange = invertedRanges_2[_a];\n bgRanges.push({\n def: eventStore.defs[defId],\n ui: eventUis[defId],\n instance: null,\n range: invertedRange,\n isStart: false,\n isEnd: false\n });\n }\n }\n\n return {\n bg: bgRanges,\n fg: fgRanges\n };\n}\n\nfunction hasBgRendering(def) {\n return def.ui.display === 'background' || def.ui.display === 'inverse-background';\n}\n\nfunction setElSeg(el, seg) {\n el.fcSeg = seg;\n}\n\nfunction getElSeg(el) {\n return el.fcSeg || el.parentNode.fcSeg || // for the harness\n null;\n} // event ui computation\n\n\nfunction compileEventUis(eventDefs, eventUiBases) {\n return mapHash(eventDefs, function (eventDef) {\n return compileEventUi(eventDef, eventUiBases);\n });\n}\n\nfunction compileEventUi(eventDef, eventUiBases) {\n var uis = [];\n\n if (eventUiBases['']) {\n uis.push(eventUiBases['']);\n }\n\n if (eventUiBases[eventDef.defId]) {\n uis.push(eventUiBases[eventDef.defId]);\n }\n\n uis.push(eventDef.ui);\n return combineEventUis(uis);\n}\n\nfunction sortEventSegs(segs, eventOrderSpecs) {\n var objs = segs.map(buildSegCompareObj);\n objs.sort(function (obj0, obj1) {\n return compareByFieldSpecs(obj0, obj1, eventOrderSpecs);\n });\n return objs.map(function (c) {\n return c._seg;\n });\n} // returns a object with all primitive props that can be compared\n\n\nfunction buildSegCompareObj(seg) {\n var eventRange = seg.eventRange;\n var eventDef = eventRange.def;\n var range = eventRange.instance ? eventRange.instance.range : eventRange.range;\n var start = range.start ? range.start.valueOf() : 0; // TODO: better support for open-range events\n\n var end = range.end ? range.end.valueOf() : 0; // \"\n\n return __assign(__assign(__assign({}, eventDef.extendedProps), eventDef), {\n id: eventDef.publicId,\n start: start,\n end: end,\n duration: end - start,\n allDay: Number(eventDef.allDay),\n _seg: seg\n });\n}\n\nfunction computeSegDraggable(seg, context) {\n var pluginHooks = context.pluginHooks;\n var transformers = pluginHooks.isDraggableTransformers;\n var _a = seg.eventRange,\n def = _a.def,\n ui = _a.ui;\n var val = ui.startEditable;\n\n for (var _i = 0, transformers_1 = transformers; _i < transformers_1.length; _i++) {\n var transformer = transformers_1[_i];\n val = transformer(val, def, ui, context);\n }\n\n return val;\n}\n\nfunction computeSegStartResizable(seg, context) {\n return seg.isStart && seg.eventRange.ui.durationEditable && context.options.eventResizableFromStart;\n}\n\nfunction computeSegEndResizable(seg, context) {\n return seg.isEnd && seg.eventRange.ui.durationEditable;\n}\n\nfunction buildSegTimeText(seg, timeFormat, context, defaultDisplayEventTime, // defaults to true\ndefaultDisplayEventEnd, // defaults to true\nstartOverride, endOverride) {\n var dateEnv = context.dateEnv,\n options = context.options;\n var displayEventTime = options.displayEventTime,\n displayEventEnd = options.displayEventEnd;\n var eventDef = seg.eventRange.def;\n var eventInstance = seg.eventRange.instance;\n\n if (displayEventTime == null) {\n displayEventTime = defaultDisplayEventTime !== false;\n }\n\n if (displayEventEnd == null) {\n displayEventEnd = defaultDisplayEventEnd !== false;\n }\n\n var wholeEventStart = eventInstance.range.start;\n var wholeEventEnd = eventInstance.range.end;\n var segStart = startOverride || seg.start || seg.eventRange.range.start;\n var segEnd = endOverride || seg.end || seg.eventRange.range.end;\n var isStartDay = startOfDay(wholeEventStart).valueOf() === startOfDay(segStart).valueOf();\n var isEndDay = startOfDay(addMs(wholeEventEnd, -1)).valueOf() === startOfDay(addMs(segEnd, -1)).valueOf();\n\n if (displayEventTime && !eventDef.allDay && (isStartDay || isEndDay)) {\n segStart = isStartDay ? wholeEventStart : segStart;\n segEnd = isEndDay ? wholeEventEnd : segEnd;\n\n if (displayEventEnd && eventDef.hasEnd) {\n return dateEnv.formatRange(segStart, segEnd, timeFormat, {\n forcedStartTzo: startOverride ? null : eventInstance.forcedStartTzo,\n forcedEndTzo: endOverride ? null : eventInstance.forcedEndTzo\n });\n }\n\n return dateEnv.format(segStart, timeFormat, {\n forcedTzo: startOverride ? null : eventInstance.forcedStartTzo // nooooo, same\n\n });\n }\n\n return '';\n}\n\nfunction getSegMeta(seg, todayRange, nowDate) {\n var segRange = seg.eventRange.range;\n return {\n isPast: segRange.end < (nowDate || todayRange.start),\n isFuture: segRange.start >= (nowDate || todayRange.end),\n isToday: todayRange && rangeContainsMarker(todayRange, segRange.start)\n };\n}\n\nfunction getEventClassNames(props) {\n var classNames = ['fc-event'];\n\n if (props.isMirror) {\n classNames.push('fc-event-mirror');\n }\n\n if (props.isDraggable) {\n classNames.push('fc-event-draggable');\n }\n\n if (props.isStartResizable || props.isEndResizable) {\n classNames.push('fc-event-resizable');\n }\n\n if (props.isDragging) {\n classNames.push('fc-event-dragging');\n }\n\n if (props.isResizing) {\n classNames.push('fc-event-resizing');\n }\n\n if (props.isSelected) {\n classNames.push('fc-event-selected');\n }\n\n if (props.isStart) {\n classNames.push('fc-event-start');\n }\n\n if (props.isEnd) {\n classNames.push('fc-event-end');\n }\n\n if (props.isPast) {\n classNames.push('fc-event-past');\n }\n\n if (props.isToday) {\n classNames.push('fc-event-today');\n }\n\n if (props.isFuture) {\n classNames.push('fc-event-future');\n }\n\n return classNames;\n}\n\nfunction buildEventRangeKey(eventRange) {\n return eventRange.instance ? eventRange.instance.instanceId : eventRange.def.defId + \":\" + eventRange.range.start.toISOString(); // inverse-background events don't have specific instances. TODO: better solution\n}\n\nfunction getSegAnchorAttrs(seg, context) {\n var _a = seg.eventRange,\n def = _a.def,\n instance = _a.instance;\n var url = def.url;\n\n if (url) {\n return {\n href: url\n };\n }\n\n var emitter = context.emitter,\n options = context.options;\n var eventInteractive = options.eventInteractive;\n\n if (eventInteractive == null) {\n eventInteractive = def.interactive;\n\n if (eventInteractive == null) {\n eventInteractive = Boolean(emitter.hasHandlers('eventClick'));\n }\n } // mock what happens in EventClicking\n\n\n if (eventInteractive) {\n // only attach keyboard-related handlers because click handler is already done in EventClicking\n return createAriaKeyboardAttrs(function (ev) {\n emitter.trigger('eventClick', {\n el: ev.target,\n event: new EventApi(context, def, instance),\n jsEvent: ev,\n view: context.viewApi\n });\n });\n }\n\n return {};\n}\n\nvar STANDARD_PROPS = {\n start: identity,\n end: identity,\n allDay: Boolean\n};\n\nfunction parseDateSpan(raw, dateEnv, defaultDuration) {\n var span = parseOpenDateSpan(raw, dateEnv);\n var range = span.range;\n\n if (!range.start) {\n return null;\n }\n\n if (!range.end) {\n if (defaultDuration == null) {\n return null;\n }\n\n range.end = dateEnv.add(range.start, defaultDuration);\n }\n\n return span;\n}\n/*\nTODO: somehow combine with parseRange?\nWill return null if the start/end props were present but parsed invalidly.\n*/\n\n\nfunction parseOpenDateSpan(raw, dateEnv) {\n var _a = refineProps(raw, STANDARD_PROPS),\n standardProps = _a.refined,\n extra = _a.extra;\n\n var startMeta = standardProps.start ? dateEnv.createMarkerMeta(standardProps.start) : null;\n var endMeta = standardProps.end ? dateEnv.createMarkerMeta(standardProps.end) : null;\n var allDay = standardProps.allDay;\n\n if (allDay == null) {\n allDay = startMeta && startMeta.isTimeUnspecified && (!endMeta || endMeta.isTimeUnspecified);\n }\n\n return __assign({\n range: {\n start: startMeta ? startMeta.marker : null,\n end: endMeta ? endMeta.marker : null\n },\n allDay: allDay\n }, extra);\n}\n\nfunction isDateSpansEqual(span0, span1) {\n return rangesEqual(span0.range, span1.range) && span0.allDay === span1.allDay && isSpanPropsEqual(span0, span1);\n} // the NON-DATE-RELATED props\n\n\nfunction isSpanPropsEqual(span0, span1) {\n for (var propName in span1) {\n if (propName !== 'range' && propName !== 'allDay') {\n if (span0[propName] !== span1[propName]) {\n return false;\n }\n }\n } // are there any props that span0 has that span1 DOESN'T have?\n // both have range/allDay, so no need to special-case.\n\n\n for (var propName in span0) {\n if (!(propName in span1)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction buildDateSpanApi(span, dateEnv) {\n return __assign(__assign({}, buildRangeApi(span.range, dateEnv, span.allDay)), {\n allDay: span.allDay\n });\n}\n\nfunction buildRangeApiWithTimeZone(range, dateEnv, omitTime) {\n return __assign(__assign({}, buildRangeApi(range, dateEnv, omitTime)), {\n timeZone: dateEnv.timeZone\n });\n}\n\nfunction buildRangeApi(range, dateEnv, omitTime) {\n return {\n start: dateEnv.toDate(range.start),\n end: dateEnv.toDate(range.end),\n startStr: dateEnv.formatIso(range.start, {\n omitTime: omitTime\n }),\n endStr: dateEnv.formatIso(range.end, {\n omitTime: omitTime\n })\n };\n}\n\nfunction fabricateEventRange(dateSpan, eventUiBases, context) {\n var res = refineEventDef({\n editable: false\n }, context);\n var def = parseEventDef(res.refined, res.extra, '', // sourceId\n dateSpan.allDay, true, // hasEnd\n context);\n return {\n def: def,\n ui: compileEventUi(def, eventUiBases),\n instance: createEventInstance(def.defId, dateSpan.range),\n range: dateSpan.range,\n isStart: true,\n isEnd: true\n };\n}\n\nfunction triggerDateSelect(selection, pev, context) {\n context.emitter.trigger('select', __assign(__assign({}, buildDateSpanApiWithContext(selection, context)), {\n jsEvent: pev ? pev.origEvent : null,\n view: context.viewApi || context.calendarApi.view\n }));\n}\n\nfunction triggerDateUnselect(pev, context) {\n context.emitter.trigger('unselect', {\n jsEvent: pev ? pev.origEvent : null,\n view: context.viewApi || context.calendarApi.view\n });\n}\n\nfunction buildDateSpanApiWithContext(dateSpan, context) {\n var props = {};\n\n for (var _i = 0, _a = context.pluginHooks.dateSpanTransforms; _i < _a.length; _i++) {\n var transform = _a[_i];\n\n __assign(props, transform(dateSpan, context));\n }\n\n __assign(props, buildDateSpanApi(dateSpan, context.dateEnv));\n\n return props;\n} // Given an event's allDay status and start date, return what its fallback end date should be.\n// TODO: rename to computeDefaultEventEnd\n\n\nfunction getDefaultEventEnd(allDay, marker, context) {\n var dateEnv = context.dateEnv,\n options = context.options;\n var end = marker;\n\n if (allDay) {\n end = startOfDay(end);\n end = dateEnv.add(end, options.defaultAllDayEventDuration);\n } else {\n end = dateEnv.add(end, options.defaultTimedEventDuration);\n }\n\n return end;\n} // applies the mutation to ALL defs/instances within the event store\n\n\nfunction applyMutationToEventStore(eventStore, eventConfigBase, mutation, context) {\n var eventConfigs = compileEventUis(eventStore.defs, eventConfigBase);\n var dest = createEmptyEventStore();\n\n for (var defId in eventStore.defs) {\n var def = eventStore.defs[defId];\n dest.defs[defId] = applyMutationToEventDef(def, eventConfigs[defId], mutation, context);\n }\n\n for (var instanceId in eventStore.instances) {\n var instance = eventStore.instances[instanceId];\n var def = dest.defs[instance.defId]; // important to grab the newly modified def\n\n dest.instances[instanceId] = applyMutationToEventInstance(instance, def, eventConfigs[instance.defId], mutation, context);\n }\n\n return dest;\n}\n\nfunction applyMutationToEventDef(eventDef, eventConfig, mutation, context) {\n var standardProps = mutation.standardProps || {}; // if hasEnd has not been specified, guess a good value based on deltas.\n // if duration will change, there's no way the default duration will persist,\n // and thus, we need to mark the event as having a real end\n\n if (standardProps.hasEnd == null && eventConfig.durationEditable && (mutation.startDelta || mutation.endDelta)) {\n standardProps.hasEnd = true; // TODO: is this mutation okay?\n }\n\n var copy = __assign(__assign(__assign({}, eventDef), standardProps), {\n ui: __assign(__assign({}, eventDef.ui), standardProps.ui)\n });\n\n if (mutation.extendedProps) {\n copy.extendedProps = __assign(__assign({}, copy.extendedProps), mutation.extendedProps);\n }\n\n for (var _i = 0, _a = context.pluginHooks.eventDefMutationAppliers; _i < _a.length; _i++) {\n var applier = _a[_i];\n applier(copy, mutation, context);\n }\n\n if (!copy.hasEnd && context.options.forceEventDuration) {\n copy.hasEnd = true;\n }\n\n return copy;\n}\n\nfunction applyMutationToEventInstance(eventInstance, eventDef, // must first be modified by applyMutationToEventDef\neventConfig, mutation, context) {\n var dateEnv = context.dateEnv;\n var forceAllDay = mutation.standardProps && mutation.standardProps.allDay === true;\n var clearEnd = mutation.standardProps && mutation.standardProps.hasEnd === false;\n\n var copy = __assign({}, eventInstance);\n\n if (forceAllDay) {\n copy.range = computeAlignedDayRange(copy.range);\n }\n\n if (mutation.datesDelta && eventConfig.startEditable) {\n copy.range = {\n start: dateEnv.add(copy.range.start, mutation.datesDelta),\n end: dateEnv.add(copy.range.end, mutation.datesDelta)\n };\n }\n\n if (mutation.startDelta && eventConfig.durationEditable) {\n copy.range = {\n start: dateEnv.add(copy.range.start, mutation.startDelta),\n end: copy.range.end\n };\n }\n\n if (mutation.endDelta && eventConfig.durationEditable) {\n copy.range = {\n start: copy.range.start,\n end: dateEnv.add(copy.range.end, mutation.endDelta)\n };\n }\n\n if (clearEnd) {\n copy.range = {\n start: copy.range.start,\n end: getDefaultEventEnd(eventDef.allDay, copy.range.start, context)\n };\n } // in case event was all-day but the supplied deltas were not\n // better util for this?\n\n\n if (eventDef.allDay) {\n copy.range = {\n start: startOfDay(copy.range.start),\n end: startOfDay(copy.range.end)\n };\n } // handle invalid durations\n\n\n if (copy.range.end < copy.range.start) {\n copy.range.end = getDefaultEventEnd(eventDef.allDay, copy.range.start, context);\n }\n\n return copy;\n} // no public types yet. when there are, export from:\n// import {} from './api-type-deps'\n\n\nvar ViewApi =\n/** @class */\nfunction () {\n function ViewApi(type, getCurrentData, dateEnv) {\n this.type = type;\n this.getCurrentData = getCurrentData;\n this.dateEnv = dateEnv;\n }\n\n Object.defineProperty(ViewApi.prototype, \"calendar\", {\n get: function get() {\n return this.getCurrentData().calendarApi;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewApi.prototype, \"title\", {\n get: function get() {\n return this.getCurrentData().viewTitle;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewApi.prototype, \"activeStart\", {\n get: function get() {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewApi.prototype, \"activeEnd\", {\n get: function get() {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewApi.prototype, \"currentStart\", {\n get: function get() {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewApi.prototype, \"currentEnd\", {\n get: function get() {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end);\n },\n enumerable: false,\n configurable: true\n });\n\n ViewApi.prototype.getOption = function (name) {\n return this.getCurrentData().options[name]; // are the view-specific options\n };\n\n return ViewApi;\n}();\n\nvar EVENT_SOURCE_REFINERS = {\n id: String,\n defaultAllDay: Boolean,\n url: String,\n format: String,\n events: identity,\n eventDataTransform: identity,\n // for any network-related sources\n success: identity,\n failure: identity\n};\n\nfunction parseEventSource(raw, context, refiners) {\n if (refiners === void 0) {\n refiners = buildEventSourceRefiners(context);\n }\n\n var rawObj;\n\n if (typeof raw === 'string') {\n rawObj = {\n url: raw\n };\n } else if (typeof raw === 'function' || Array.isArray(raw)) {\n rawObj = {\n events: raw\n };\n } else if (_typeof(raw) === 'object' && raw) {\n // not null\n rawObj = raw;\n }\n\n if (rawObj) {\n var _a = refineProps(rawObj, refiners),\n refined = _a.refined,\n extra = _a.extra;\n\n var metaRes = buildEventSourceMeta(refined, context);\n\n if (metaRes) {\n return {\n _raw: raw,\n isFetching: false,\n latestFetchId: '',\n fetchRange: null,\n defaultAllDay: refined.defaultAllDay,\n eventDataTransform: refined.eventDataTransform,\n success: refined.success,\n failure: refined.failure,\n publicId: refined.id || '',\n sourceId: guid(),\n sourceDefId: metaRes.sourceDefId,\n meta: metaRes.meta,\n ui: createEventUi(refined, context),\n extendedProps: extra\n };\n }\n }\n\n return null;\n}\n\nfunction buildEventSourceRefiners(context) {\n return __assign(__assign(__assign({}, EVENT_UI_REFINERS), EVENT_SOURCE_REFINERS), context.pluginHooks.eventSourceRefiners);\n}\n\nfunction buildEventSourceMeta(raw, context) {\n var defs = context.pluginHooks.eventSourceDefs;\n\n for (var i = defs.length - 1; i >= 0; i -= 1) {\n // later-added plugins take precedence\n var def = defs[i];\n var meta = def.parseMeta(raw);\n\n if (meta) {\n return {\n sourceDefId: i,\n meta: meta\n };\n }\n }\n\n return null;\n}\n\nfunction reduceCurrentDate(currentDate, action) {\n switch (action.type) {\n case 'CHANGE_DATE':\n return action.dateMarker;\n\n default:\n return currentDate;\n }\n}\n\nfunction getInitialDate(options, dateEnv) {\n var initialDateInput = options.initialDate; // compute the initial ambig-timezone date\n\n if (initialDateInput != null) {\n return dateEnv.createMarker(initialDateInput);\n }\n\n return getNow(options.now, dateEnv); // getNow already returns unzoned\n}\n\nfunction getNow(nowInput, dateEnv) {\n if (typeof nowInput === 'function') {\n nowInput = nowInput();\n }\n\n if (nowInput == null) {\n return dateEnv.createNowMarker();\n }\n\n return dateEnv.createMarker(nowInput);\n}\n\nvar CalendarApi =\n/** @class */\nfunction () {\n function CalendarApi() {}\n\n CalendarApi.prototype.getCurrentData = function () {\n return this.currentDataManager.getCurrentData();\n };\n\n CalendarApi.prototype.dispatch = function (action) {\n return this.currentDataManager.dispatch(action);\n };\n\n Object.defineProperty(CalendarApi.prototype, \"view\", {\n get: function get() {\n return this.getCurrentData().viewApi;\n } // for public API\n ,\n enumerable: false,\n configurable: true\n });\n\n CalendarApi.prototype.batchRendering = function (callback) {\n callback();\n };\n\n CalendarApi.prototype.updateSize = function () {\n this.trigger('_resize', true);\n }; // Options\n // -----------------------------------------------------------------------------------------------------------------\n\n\n CalendarApi.prototype.setOption = function (name, val) {\n this.dispatch({\n type: 'SET_OPTION',\n optionName: name,\n rawOptionValue: val\n });\n };\n\n CalendarApi.prototype.getOption = function (name) {\n return this.currentDataManager.currentCalendarOptionsInput[name];\n };\n\n CalendarApi.prototype.getAvailableLocaleCodes = function () {\n return Object.keys(this.getCurrentData().availableRawLocales);\n }; // Trigger\n // -----------------------------------------------------------------------------------------------------------------\n\n\n CalendarApi.prototype.on = function (handlerName, handler) {\n var currentDataManager = this.currentDataManager;\n\n if (currentDataManager.currentCalendarOptionsRefiners[handlerName]) {\n currentDataManager.emitter.on(handlerName, handler);\n } else {\n console.warn(\"Unknown listener name '\" + handlerName + \"'\");\n }\n };\n\n CalendarApi.prototype.off = function (handlerName, handler) {\n this.currentDataManager.emitter.off(handlerName, handler);\n }; // not meant for public use\n\n\n CalendarApi.prototype.trigger = function (handlerName) {\n var _a;\n\n var args = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n\n (_a = this.currentDataManager.emitter).trigger.apply(_a, __spreadArray([handlerName], args));\n }; // View\n // -----------------------------------------------------------------------------------------------------------------\n\n\n CalendarApi.prototype.changeView = function (viewType, dateOrRange) {\n var _this = this;\n\n this.batchRendering(function () {\n _this.unselect();\n\n if (dateOrRange) {\n if (dateOrRange.start && dateOrRange.end) {\n // a range\n _this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType: viewType\n });\n\n _this.dispatch({\n type: 'SET_OPTION',\n optionName: 'visibleRange',\n rawOptionValue: dateOrRange\n });\n } else {\n var dateEnv = _this.getCurrentData().dateEnv;\n\n _this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType: viewType,\n dateMarker: dateEnv.createMarker(dateOrRange)\n });\n }\n } else {\n _this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType: viewType\n });\n }\n });\n }; // Forces navigation to a view for the given date.\n // `viewType` can be a specific view name or a generic one like \"week\" or \"day\".\n // needs to change\n\n\n CalendarApi.prototype.zoomTo = function (dateMarker, viewType) {\n var state = this.getCurrentData();\n var spec;\n viewType = viewType || 'day'; // day is default zoom\n\n spec = state.viewSpecs[viewType] || this.getUnitViewSpec(viewType);\n this.unselect();\n\n if (spec) {\n this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType: spec.type,\n dateMarker: dateMarker\n });\n } else {\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: dateMarker\n });\n }\n }; // Given a duration singular unit, like \"week\" or \"day\", finds a matching view spec.\n // Preference is given to views that have corresponding buttons.\n\n\n CalendarApi.prototype.getUnitViewSpec = function (unit) {\n var _a = this.getCurrentData(),\n viewSpecs = _a.viewSpecs,\n toolbarConfig = _a.toolbarConfig;\n\n var viewTypes = [].concat(toolbarConfig.header ? toolbarConfig.header.viewsWithButtons : [], toolbarConfig.footer ? toolbarConfig.footer.viewsWithButtons : []);\n var i;\n var spec;\n\n for (var viewType in viewSpecs) {\n viewTypes.push(viewType);\n }\n\n for (i = 0; i < viewTypes.length; i += 1) {\n spec = viewSpecs[viewTypes[i]];\n\n if (spec) {\n if (spec.singleUnit === unit) {\n return spec;\n }\n }\n }\n\n return null;\n }; // Current Date\n // -----------------------------------------------------------------------------------------------------------------\n\n\n CalendarApi.prototype.prev = function () {\n this.unselect();\n this.dispatch({\n type: 'PREV'\n });\n };\n\n CalendarApi.prototype.next = function () {\n this.unselect();\n this.dispatch({\n type: 'NEXT'\n });\n };\n\n CalendarApi.prototype.prevYear = function () {\n var state = this.getCurrentData();\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.addYears(state.currentDate, -1)\n });\n };\n\n CalendarApi.prototype.nextYear = function () {\n var state = this.getCurrentData();\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.addYears(state.currentDate, 1)\n });\n };\n\n CalendarApi.prototype.today = function () {\n var state = this.getCurrentData();\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: getNow(state.calendarOptions.now, state.dateEnv)\n });\n };\n\n CalendarApi.prototype.gotoDate = function (zonedDateInput) {\n var state = this.getCurrentData();\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.createMarker(zonedDateInput)\n });\n };\n\n CalendarApi.prototype.incrementDate = function (deltaInput) {\n var state = this.getCurrentData();\n var delta = createDuration(deltaInput);\n\n if (delta) {\n // else, warn about invalid input?\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.add(state.currentDate, delta)\n });\n }\n }; // for external API\n\n\n CalendarApi.prototype.getDate = function () {\n var state = this.getCurrentData();\n return state.dateEnv.toDate(state.currentDate);\n }; // Date Formatting Utils\n // -----------------------------------------------------------------------------------------------------------------\n\n\n CalendarApi.prototype.formatDate = function (d, formatter) {\n var dateEnv = this.getCurrentData().dateEnv;\n return dateEnv.format(dateEnv.createMarker(d), createFormatter(formatter));\n }; // `settings` is for formatter AND isEndExclusive\n\n\n CalendarApi.prototype.formatRange = function (d0, d1, settings) {\n var dateEnv = this.getCurrentData().dateEnv;\n return dateEnv.formatRange(dateEnv.createMarker(d0), dateEnv.createMarker(d1), createFormatter(settings), settings);\n };\n\n CalendarApi.prototype.formatIso = function (d, omitTime) {\n var dateEnv = this.getCurrentData().dateEnv;\n return dateEnv.formatIso(dateEnv.createMarker(d), {\n omitTime: omitTime\n });\n }; // Date Selection / Event Selection / DayClick\n // -----------------------------------------------------------------------------------------------------------------\n // this public method receives start/end dates in any format, with any timezone\n // NOTE: args were changed from v3\n\n\n CalendarApi.prototype.select = function (dateOrObj, endDate) {\n var selectionInput;\n\n if (endDate == null) {\n if (dateOrObj.start != null) {\n selectionInput = dateOrObj;\n } else {\n selectionInput = {\n start: dateOrObj,\n end: null\n };\n }\n } else {\n selectionInput = {\n start: dateOrObj,\n end: endDate\n };\n }\n\n var state = this.getCurrentData();\n var selection = parseDateSpan(selectionInput, state.dateEnv, createDuration({\n days: 1\n }));\n\n if (selection) {\n // throw parse error otherwise?\n this.dispatch({\n type: 'SELECT_DATES',\n selection: selection\n });\n triggerDateSelect(selection, null, state);\n }\n }; // public method\n\n\n CalendarApi.prototype.unselect = function (pev) {\n var state = this.getCurrentData();\n\n if (state.dateSelection) {\n this.dispatch({\n type: 'UNSELECT_DATES'\n });\n triggerDateUnselect(pev, state);\n }\n }; // Public Events API\n // -----------------------------------------------------------------------------------------------------------------\n\n\n CalendarApi.prototype.addEvent = function (eventInput, sourceInput) {\n if (eventInput instanceof EventApi) {\n var def = eventInput._def;\n var instance = eventInput._instance;\n var currentData = this.getCurrentData(); // not already present? don't want to add an old snapshot\n\n if (!currentData.eventStore.defs[def.defId]) {\n this.dispatch({\n type: 'ADD_EVENTS',\n eventStore: eventTupleToStore({\n def: def,\n instance: instance\n }) // TODO: better util for two args?\n\n });\n this.triggerEventAdd(eventInput);\n }\n\n return eventInput;\n }\n\n var state = this.getCurrentData();\n var eventSource;\n\n if (sourceInput instanceof EventSourceApi) {\n eventSource = sourceInput.internalEventSource;\n } else if (typeof sourceInput === 'boolean') {\n if (sourceInput) {\n // true. part of the first event source\n eventSource = hashValuesToArray(state.eventSources)[0];\n }\n } else if (sourceInput != null) {\n // an ID. accepts a number too\n var sourceApi = this.getEventSourceById(sourceInput); // TODO: use an internal function\n\n if (!sourceApi) {\n console.warn(\"Could not find an event source with ID \\\"\" + sourceInput + \"\\\"\"); // TODO: test\n\n return null;\n }\n\n eventSource = sourceApi.internalEventSource;\n }\n\n var tuple = parseEvent(eventInput, eventSource, state, false);\n\n if (tuple) {\n var newEventApi = new EventApi(state, tuple.def, tuple.def.recurringDef ? null : tuple.instance);\n this.dispatch({\n type: 'ADD_EVENTS',\n eventStore: eventTupleToStore(tuple)\n });\n this.triggerEventAdd(newEventApi);\n return newEventApi;\n }\n\n return null;\n };\n\n CalendarApi.prototype.triggerEventAdd = function (eventApi) {\n var _this = this;\n\n var emitter = this.getCurrentData().emitter;\n emitter.trigger('eventAdd', {\n event: eventApi,\n relatedEvents: [],\n revert: function revert() {\n _this.dispatch({\n type: 'REMOVE_EVENTS',\n eventStore: eventApiToStore(eventApi)\n });\n }\n });\n }; // TODO: optimize\n\n\n CalendarApi.prototype.getEventById = function (id) {\n var state = this.getCurrentData();\n var _a = state.eventStore,\n defs = _a.defs,\n instances = _a.instances;\n id = String(id);\n\n for (var defId in defs) {\n var def = defs[defId];\n\n if (def.publicId === id) {\n if (def.recurringDef) {\n return new EventApi(state, def, null);\n }\n\n for (var instanceId in instances) {\n var instance = instances[instanceId];\n\n if (instance.defId === def.defId) {\n return new EventApi(state, def, instance);\n }\n }\n }\n }\n\n return null;\n };\n\n CalendarApi.prototype.getEvents = function () {\n var currentData = this.getCurrentData();\n return buildEventApis(currentData.eventStore, currentData);\n };\n\n CalendarApi.prototype.removeAllEvents = function () {\n this.dispatch({\n type: 'REMOVE_ALL_EVENTS'\n });\n }; // Public Event Sources API\n // -----------------------------------------------------------------------------------------------------------------\n\n\n CalendarApi.prototype.getEventSources = function () {\n var state = this.getCurrentData();\n var sourceHash = state.eventSources;\n var sourceApis = [];\n\n for (var internalId in sourceHash) {\n sourceApis.push(new EventSourceApi(state, sourceHash[internalId]));\n }\n\n return sourceApis;\n };\n\n CalendarApi.prototype.getEventSourceById = function (id) {\n var state = this.getCurrentData();\n var sourceHash = state.eventSources;\n id = String(id);\n\n for (var sourceId in sourceHash) {\n if (sourceHash[sourceId].publicId === id) {\n return new EventSourceApi(state, sourceHash[sourceId]);\n }\n }\n\n return null;\n };\n\n CalendarApi.prototype.addEventSource = function (sourceInput) {\n var state = this.getCurrentData();\n\n if (sourceInput instanceof EventSourceApi) {\n // not already present? don't want to add an old snapshot\n if (!state.eventSources[sourceInput.internalEventSource.sourceId]) {\n this.dispatch({\n type: 'ADD_EVENT_SOURCES',\n sources: [sourceInput.internalEventSource]\n });\n }\n\n return sourceInput;\n }\n\n var eventSource = parseEventSource(sourceInput, state);\n\n if (eventSource) {\n // TODO: error otherwise?\n this.dispatch({\n type: 'ADD_EVENT_SOURCES',\n sources: [eventSource]\n });\n return new EventSourceApi(state, eventSource);\n }\n\n return null;\n };\n\n CalendarApi.prototype.removeAllEventSources = function () {\n this.dispatch({\n type: 'REMOVE_ALL_EVENT_SOURCES'\n });\n };\n\n CalendarApi.prototype.refetchEvents = function () {\n this.dispatch({\n type: 'FETCH_EVENT_SOURCES',\n isRefetch: true\n });\n }; // Scroll\n // -----------------------------------------------------------------------------------------------------------------\n\n\n CalendarApi.prototype.scrollToTime = function (timeInput) {\n var time = createDuration(timeInput);\n\n if (time) {\n this.trigger('_scrollRequest', {\n time: time\n });\n }\n };\n\n return CalendarApi;\n}();\n\nvar EventApi =\n/** @class */\nfunction () {\n // instance will be null if expressing a recurring event that has no current instances,\n // OR if trying to validate an incoming external event that has no dates assigned\n function EventApi(context, def, instance) {\n this._context = context;\n this._def = def;\n this._instance = instance || null;\n }\n /*\n TODO: make event struct more responsible for this\n */\n\n\n EventApi.prototype.setProp = function (name, val) {\n var _a, _b;\n\n if (name in EVENT_DATE_REFINERS) {\n console.warn('Could not set date-related prop \\'name\\'. Use one of the date-related methods instead.'); // TODO: make proper aliasing system?\n } else if (name === 'id') {\n val = EVENT_NON_DATE_REFINERS[name](val);\n this.mutate({\n standardProps: {\n publicId: val\n } // hardcoded internal name\n\n });\n } else if (name in EVENT_NON_DATE_REFINERS) {\n val = EVENT_NON_DATE_REFINERS[name](val);\n this.mutate({\n standardProps: (_a = {}, _a[name] = val, _a)\n });\n } else if (name in EVENT_UI_REFINERS) {\n var ui = EVENT_UI_REFINERS[name](val);\n\n if (name === 'color') {\n ui = {\n backgroundColor: val,\n borderColor: val\n };\n } else if (name === 'editable') {\n ui = {\n startEditable: val,\n durationEditable: val\n };\n } else {\n ui = (_b = {}, _b[name] = val, _b);\n }\n\n this.mutate({\n standardProps: {\n ui: ui\n }\n });\n } else {\n console.warn(\"Could not set prop '\" + name + \"'. Use setExtendedProp instead.\");\n }\n };\n\n EventApi.prototype.setExtendedProp = function (name, val) {\n var _a;\n\n this.mutate({\n extendedProps: (_a = {}, _a[name] = val, _a)\n });\n };\n\n EventApi.prototype.setStart = function (startInput, options) {\n if (options === void 0) {\n options = {};\n }\n\n var dateEnv = this._context.dateEnv;\n var start = dateEnv.createMarker(startInput);\n\n if (start && this._instance) {\n // TODO: warning if parsed bad\n var instanceRange = this._instance.range;\n var startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity); // what if parsed bad!?\n\n if (options.maintainDuration) {\n this.mutate({\n datesDelta: startDelta\n });\n } else {\n this.mutate({\n startDelta: startDelta\n });\n }\n }\n };\n\n EventApi.prototype.setEnd = function (endInput, options) {\n if (options === void 0) {\n options = {};\n }\n\n var dateEnv = this._context.dateEnv;\n var end;\n\n if (endInput != null) {\n end = dateEnv.createMarker(endInput);\n\n if (!end) {\n return; // TODO: warning if parsed bad\n }\n }\n\n if (this._instance) {\n if (end) {\n var endDelta = diffDates(this._instance.range.end, end, dateEnv, options.granularity);\n this.mutate({\n endDelta: endDelta\n });\n } else {\n this.mutate({\n standardProps: {\n hasEnd: false\n }\n });\n }\n }\n };\n\n EventApi.prototype.setDates = function (startInput, endInput, options) {\n if (options === void 0) {\n options = {};\n }\n\n var dateEnv = this._context.dateEnv;\n var standardProps = {\n allDay: options.allDay\n };\n var start = dateEnv.createMarker(startInput);\n var end;\n\n if (!start) {\n return; // TODO: warning if parsed bad\n }\n\n if (endInput != null) {\n end = dateEnv.createMarker(endInput);\n\n if (!end) {\n // TODO: warning if parsed bad\n return;\n }\n }\n\n if (this._instance) {\n var instanceRange = this._instance.range; // when computing the diff for an event being converted to all-day,\n // compute diff off of the all-day values the way event-mutation does.\n\n if (options.allDay === true) {\n instanceRange = computeAlignedDayRange(instanceRange);\n }\n\n var startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity);\n\n if (end) {\n var endDelta = diffDates(instanceRange.end, end, dateEnv, options.granularity);\n\n if (durationsEqual(startDelta, endDelta)) {\n this.mutate({\n datesDelta: startDelta,\n standardProps: standardProps\n });\n } else {\n this.mutate({\n startDelta: startDelta,\n endDelta: endDelta,\n standardProps: standardProps\n });\n }\n } else {\n // means \"clear the end\"\n standardProps.hasEnd = false;\n this.mutate({\n datesDelta: startDelta,\n standardProps: standardProps\n });\n }\n }\n };\n\n EventApi.prototype.moveStart = function (deltaInput) {\n var delta = createDuration(deltaInput);\n\n if (delta) {\n // TODO: warning if parsed bad\n this.mutate({\n startDelta: delta\n });\n }\n };\n\n EventApi.prototype.moveEnd = function (deltaInput) {\n var delta = createDuration(deltaInput);\n\n if (delta) {\n // TODO: warning if parsed bad\n this.mutate({\n endDelta: delta\n });\n }\n };\n\n EventApi.prototype.moveDates = function (deltaInput) {\n var delta = createDuration(deltaInput);\n\n if (delta) {\n // TODO: warning if parsed bad\n this.mutate({\n datesDelta: delta\n });\n }\n };\n\n EventApi.prototype.setAllDay = function (allDay, options) {\n if (options === void 0) {\n options = {};\n }\n\n var standardProps = {\n allDay: allDay\n };\n var maintainDuration = options.maintainDuration;\n\n if (maintainDuration == null) {\n maintainDuration = this._context.options.allDayMaintainDuration;\n }\n\n if (this._def.allDay !== allDay) {\n standardProps.hasEnd = maintainDuration;\n }\n\n this.mutate({\n standardProps: standardProps\n });\n };\n\n EventApi.prototype.formatRange = function (formatInput) {\n var dateEnv = this._context.dateEnv;\n var instance = this._instance;\n var formatter = createFormatter(formatInput);\n\n if (this._def.hasEnd) {\n return dateEnv.formatRange(instance.range.start, instance.range.end, formatter, {\n forcedStartTzo: instance.forcedStartTzo,\n forcedEndTzo: instance.forcedEndTzo\n });\n }\n\n return dateEnv.format(instance.range.start, formatter, {\n forcedTzo: instance.forcedStartTzo\n });\n };\n\n EventApi.prototype.mutate = function (mutation) {\n var instance = this._instance;\n\n if (instance) {\n var def = this._def;\n var context_1 = this._context;\n var eventStore_1 = context_1.getCurrentData().eventStore;\n var relevantEvents = getRelevantEvents(eventStore_1, instance.instanceId);\n var eventConfigBase = {\n '': {\n display: '',\n startEditable: true,\n durationEditable: true,\n constraints: [],\n overlap: null,\n allows: [],\n backgroundColor: '',\n borderColor: '',\n textColor: '',\n classNames: []\n }\n };\n relevantEvents = applyMutationToEventStore(relevantEvents, eventConfigBase, mutation, context_1);\n var oldEvent = new EventApi(context_1, def, instance); // snapshot\n\n this._def = relevantEvents.defs[def.defId];\n this._instance = relevantEvents.instances[instance.instanceId];\n context_1.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: relevantEvents\n });\n context_1.emitter.trigger('eventChange', {\n oldEvent: oldEvent,\n event: this,\n relatedEvents: buildEventApis(relevantEvents, context_1, instance),\n revert: function revert() {\n context_1.dispatch({\n type: 'RESET_EVENTS',\n eventStore: eventStore_1\n });\n }\n });\n }\n };\n\n EventApi.prototype.remove = function () {\n var context = this._context;\n var asStore = eventApiToStore(this);\n context.dispatch({\n type: 'REMOVE_EVENTS',\n eventStore: asStore\n });\n context.emitter.trigger('eventRemove', {\n event: this,\n relatedEvents: [],\n revert: function revert() {\n context.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: asStore\n });\n }\n });\n };\n\n Object.defineProperty(EventApi.prototype, \"source\", {\n get: function get() {\n var sourceId = this._def.sourceId;\n\n if (sourceId) {\n return new EventSourceApi(this._context, this._context.getCurrentData().eventSources[sourceId]);\n }\n\n return null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"start\", {\n get: function get() {\n return this._instance ? this._context.dateEnv.toDate(this._instance.range.start) : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"end\", {\n get: function get() {\n return this._instance && this._def.hasEnd ? this._context.dateEnv.toDate(this._instance.range.end) : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"startStr\", {\n get: function get() {\n var instance = this._instance;\n\n if (instance) {\n return this._context.dateEnv.formatIso(instance.range.start, {\n omitTime: this._def.allDay,\n forcedTzo: instance.forcedStartTzo\n });\n }\n\n return '';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"endStr\", {\n get: function get() {\n var instance = this._instance;\n\n if (instance && this._def.hasEnd) {\n return this._context.dateEnv.formatIso(instance.range.end, {\n omitTime: this._def.allDay,\n forcedTzo: instance.forcedEndTzo\n });\n }\n\n return '';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"id\", {\n // computable props that all access the def\n // TODO: find a TypeScript-compatible way to do this at scale\n get: function get() {\n return this._def.publicId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"groupId\", {\n get: function get() {\n return this._def.groupId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"allDay\", {\n get: function get() {\n return this._def.allDay;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"title\", {\n get: function get() {\n return this._def.title;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"url\", {\n get: function get() {\n return this._def.url;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"display\", {\n get: function get() {\n return this._def.ui.display || 'auto';\n } // bad. just normalize the type earlier\n ,\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"startEditable\", {\n get: function get() {\n return this._def.ui.startEditable;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"durationEditable\", {\n get: function get() {\n return this._def.ui.durationEditable;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"constraint\", {\n get: function get() {\n return this._def.ui.constraints[0] || null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"overlap\", {\n get: function get() {\n return this._def.ui.overlap;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"allow\", {\n get: function get() {\n return this._def.ui.allows[0] || null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"backgroundColor\", {\n get: function get() {\n return this._def.ui.backgroundColor;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"borderColor\", {\n get: function get() {\n return this._def.ui.borderColor;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"textColor\", {\n get: function get() {\n return this._def.ui.textColor;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"classNames\", {\n // NOTE: user can't modify these because Object.freeze was called in event-def parsing\n get: function get() {\n return this._def.ui.classNames;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"extendedProps\", {\n get: function get() {\n return this._def.extendedProps;\n },\n enumerable: false,\n configurable: true\n });\n\n EventApi.prototype.toPlainObject = function (settings) {\n if (settings === void 0) {\n settings = {};\n }\n\n var def = this._def;\n var ui = def.ui;\n\n var _a = this,\n startStr = _a.startStr,\n endStr = _a.endStr;\n\n var res = {};\n\n if (def.title) {\n res.title = def.title;\n }\n\n if (startStr) {\n res.start = startStr;\n }\n\n if (endStr) {\n res.end = endStr;\n }\n\n if (def.publicId) {\n res.id = def.publicId;\n }\n\n if (def.groupId) {\n res.groupId = def.groupId;\n }\n\n if (def.url) {\n res.url = def.url;\n }\n\n if (ui.display && ui.display !== 'auto') {\n res.display = ui.display;\n } // TODO: what about recurring-event properties???\n // TODO: include startEditable/durationEditable/constraint/overlap/allow\n\n\n if (settings.collapseColor && ui.backgroundColor && ui.backgroundColor === ui.borderColor) {\n res.color = ui.backgroundColor;\n } else {\n if (ui.backgroundColor) {\n res.backgroundColor = ui.backgroundColor;\n }\n\n if (ui.borderColor) {\n res.borderColor = ui.borderColor;\n }\n }\n\n if (ui.textColor) {\n res.textColor = ui.textColor;\n }\n\n if (ui.classNames.length) {\n res.classNames = ui.classNames;\n }\n\n if (Object.keys(def.extendedProps).length) {\n if (settings.collapseExtendedProps) {\n __assign(res, def.extendedProps);\n } else {\n res.extendedProps = def.extendedProps;\n }\n }\n\n return res;\n };\n\n EventApi.prototype.toJSON = function () {\n return this.toPlainObject();\n };\n\n return EventApi;\n}();\n\nfunction eventApiToStore(eventApi) {\n var _a, _b;\n\n var def = eventApi._def;\n var instance = eventApi._instance;\n return {\n defs: (_a = {}, _a[def.defId] = def, _a),\n instances: instance ? (_b = {}, _b[instance.instanceId] = instance, _b) : {}\n };\n}\n\nfunction buildEventApis(eventStore, context, excludeInstance) {\n var defs = eventStore.defs,\n instances = eventStore.instances;\n var eventApis = [];\n var excludeInstanceId = excludeInstance ? excludeInstance.instanceId : '';\n\n for (var id in instances) {\n var instance = instances[id];\n var def = defs[instance.defId];\n\n if (instance.instanceId !== excludeInstanceId) {\n eventApis.push(new EventApi(context, def, instance));\n }\n }\n\n return eventApis;\n}\n\nvar calendarSystemClassMap = {};\n\nfunction registerCalendarSystem(name, theClass) {\n calendarSystemClassMap[name] = theClass;\n}\n\nfunction createCalendarSystem(name) {\n return new calendarSystemClassMap[name]();\n}\n\nvar GregorianCalendarSystem =\n/** @class */\nfunction () {\n function GregorianCalendarSystem() {}\n\n GregorianCalendarSystem.prototype.getMarkerYear = function (d) {\n return d.getUTCFullYear();\n };\n\n GregorianCalendarSystem.prototype.getMarkerMonth = function (d) {\n return d.getUTCMonth();\n };\n\n GregorianCalendarSystem.prototype.getMarkerDay = function (d) {\n return d.getUTCDate();\n };\n\n GregorianCalendarSystem.prototype.arrayToMarker = function (arr) {\n return arrayToUtcDate(arr);\n };\n\n GregorianCalendarSystem.prototype.markerToArray = function (marker) {\n return dateToUtcArray(marker);\n };\n\n return GregorianCalendarSystem;\n}();\n\nregisterCalendarSystem('gregory', GregorianCalendarSystem);\nvar ISO_RE = /^\\s*(\\d{4})(-?(\\d{2})(-?(\\d{2})([T ](\\d{2}):?(\\d{2})(:?(\\d{2})(\\.(\\d+))?)?(Z|(([-+])(\\d{2})(:?(\\d{2}))?))?)?)?)?$/;\n\nfunction parse(str) {\n var m = ISO_RE.exec(str);\n\n if (m) {\n var marker = new Date(Date.UTC(Number(m[1]), m[3] ? Number(m[3]) - 1 : 0, Number(m[5] || 1), Number(m[7] || 0), Number(m[8] || 0), Number(m[10] || 0), m[12] ? Number(\"0.\" + m[12]) * 1000 : 0));\n\n if (isValidDate(marker)) {\n var timeZoneOffset = null;\n\n if (m[13]) {\n timeZoneOffset = (m[15] === '-' ? -1 : 1) * (Number(m[16] || 0) * 60 + Number(m[18] || 0));\n }\n\n return {\n marker: marker,\n isTimeUnspecified: !m[6],\n timeZoneOffset: timeZoneOffset\n };\n }\n }\n\n return null;\n}\n\nvar DateEnv =\n/** @class */\nfunction () {\n function DateEnv(settings) {\n var timeZone = this.timeZone = settings.timeZone;\n var isNamedTimeZone = timeZone !== 'local' && timeZone !== 'UTC';\n\n if (settings.namedTimeZoneImpl && isNamedTimeZone) {\n this.namedTimeZoneImpl = new settings.namedTimeZoneImpl(timeZone);\n }\n\n this.canComputeOffset = Boolean(!isNamedTimeZone || this.namedTimeZoneImpl);\n this.calendarSystem = createCalendarSystem(settings.calendarSystem);\n this.locale = settings.locale;\n this.weekDow = settings.locale.week.dow;\n this.weekDoy = settings.locale.week.doy;\n\n if (settings.weekNumberCalculation === 'ISO') {\n this.weekDow = 1;\n this.weekDoy = 4;\n }\n\n if (typeof settings.firstDay === 'number') {\n this.weekDow = settings.firstDay;\n }\n\n if (typeof settings.weekNumberCalculation === 'function') {\n this.weekNumberFunc = settings.weekNumberCalculation;\n }\n\n this.weekText = settings.weekText != null ? settings.weekText : settings.locale.options.weekText;\n this.weekTextLong = (settings.weekTextLong != null ? settings.weekTextLong : settings.locale.options.weekTextLong) || this.weekText;\n this.cmdFormatter = settings.cmdFormatter;\n this.defaultSeparator = settings.defaultSeparator;\n } // Creating / Parsing\n\n\n DateEnv.prototype.createMarker = function (input) {\n var meta = this.createMarkerMeta(input);\n\n if (meta === null) {\n return null;\n }\n\n return meta.marker;\n };\n\n DateEnv.prototype.createNowMarker = function () {\n if (this.canComputeOffset) {\n return this.timestampToMarker(new Date().valueOf());\n } // if we can't compute the current date val for a timezone,\n // better to give the current local date vals than UTC\n\n\n return arrayToUtcDate(dateToLocalArray(new Date()));\n };\n\n DateEnv.prototype.createMarkerMeta = function (input) {\n if (typeof input === 'string') {\n return this.parse(input);\n }\n\n var marker = null;\n\n if (typeof input === 'number') {\n marker = this.timestampToMarker(input);\n } else if (input instanceof Date) {\n input = input.valueOf();\n\n if (!isNaN(input)) {\n marker = this.timestampToMarker(input);\n }\n } else if (Array.isArray(input)) {\n marker = arrayToUtcDate(input);\n }\n\n if (marker === null || !isValidDate(marker)) {\n return null;\n }\n\n return {\n marker: marker,\n isTimeUnspecified: false,\n forcedTzo: null\n };\n };\n\n DateEnv.prototype.parse = function (s) {\n var parts = parse(s);\n\n if (parts === null) {\n return null;\n }\n\n var marker = parts.marker;\n var forcedTzo = null;\n\n if (parts.timeZoneOffset !== null) {\n if (this.canComputeOffset) {\n marker = this.timestampToMarker(marker.valueOf() - parts.timeZoneOffset * 60 * 1000);\n } else {\n forcedTzo = parts.timeZoneOffset;\n }\n }\n\n return {\n marker: marker,\n isTimeUnspecified: parts.isTimeUnspecified,\n forcedTzo: forcedTzo\n };\n }; // Accessors\n\n\n DateEnv.prototype.getYear = function (marker) {\n return this.calendarSystem.getMarkerYear(marker);\n };\n\n DateEnv.prototype.getMonth = function (marker) {\n return this.calendarSystem.getMarkerMonth(marker);\n }; // Adding / Subtracting\n\n\n DateEnv.prototype.add = function (marker, dur) {\n var a = this.calendarSystem.markerToArray(marker);\n a[0] += dur.years;\n a[1] += dur.months;\n a[2] += dur.days;\n a[6] += dur.milliseconds;\n return this.calendarSystem.arrayToMarker(a);\n };\n\n DateEnv.prototype.subtract = function (marker, dur) {\n var a = this.calendarSystem.markerToArray(marker);\n a[0] -= dur.years;\n a[1] -= dur.months;\n a[2] -= dur.days;\n a[6] -= dur.milliseconds;\n return this.calendarSystem.arrayToMarker(a);\n };\n\n DateEnv.prototype.addYears = function (marker, n) {\n var a = this.calendarSystem.markerToArray(marker);\n a[0] += n;\n return this.calendarSystem.arrayToMarker(a);\n };\n\n DateEnv.prototype.addMonths = function (marker, n) {\n var a = this.calendarSystem.markerToArray(marker);\n a[1] += n;\n return this.calendarSystem.arrayToMarker(a);\n }; // Diffing Whole Units\n\n\n DateEnv.prototype.diffWholeYears = function (m0, m1) {\n var calendarSystem = this.calendarSystem;\n\n if (timeAsMs(m0) === timeAsMs(m1) && calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1) && calendarSystem.getMarkerMonth(m0) === calendarSystem.getMarkerMonth(m1)) {\n return calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0);\n }\n\n return null;\n };\n\n DateEnv.prototype.diffWholeMonths = function (m0, m1) {\n var calendarSystem = this.calendarSystem;\n\n if (timeAsMs(m0) === timeAsMs(m1) && calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1)) {\n return calendarSystem.getMarkerMonth(m1) - calendarSystem.getMarkerMonth(m0) + (calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0)) * 12;\n }\n\n return null;\n }; // Range / Duration\n\n\n DateEnv.prototype.greatestWholeUnit = function (m0, m1) {\n var n = this.diffWholeYears(m0, m1);\n\n if (n !== null) {\n return {\n unit: 'year',\n value: n\n };\n }\n\n n = this.diffWholeMonths(m0, m1);\n\n if (n !== null) {\n return {\n unit: 'month',\n value: n\n };\n }\n\n n = diffWholeWeeks(m0, m1);\n\n if (n !== null) {\n return {\n unit: 'week',\n value: n\n };\n }\n\n n = diffWholeDays(m0, m1);\n\n if (n !== null) {\n return {\n unit: 'day',\n value: n\n };\n }\n\n n = diffHours(m0, m1);\n\n if (isInt(n)) {\n return {\n unit: 'hour',\n value: n\n };\n }\n\n n = diffMinutes(m0, m1);\n\n if (isInt(n)) {\n return {\n unit: 'minute',\n value: n\n };\n }\n\n n = diffSeconds(m0, m1);\n\n if (isInt(n)) {\n return {\n unit: 'second',\n value: n\n };\n }\n\n return {\n unit: 'millisecond',\n value: m1.valueOf() - m0.valueOf()\n };\n };\n\n DateEnv.prototype.countDurationsBetween = function (m0, m1, d) {\n // TODO: can use greatestWholeUnit\n var diff;\n\n if (d.years) {\n diff = this.diffWholeYears(m0, m1);\n\n if (diff !== null) {\n return diff / asRoughYears(d);\n }\n }\n\n if (d.months) {\n diff = this.diffWholeMonths(m0, m1);\n\n if (diff !== null) {\n return diff / asRoughMonths(d);\n }\n }\n\n if (d.days) {\n diff = diffWholeDays(m0, m1);\n\n if (diff !== null) {\n return diff / asRoughDays(d);\n }\n }\n\n return (m1.valueOf() - m0.valueOf()) / asRoughMs(d);\n }; // Start-Of\n // these DON'T return zoned-dates. only UTC start-of dates\n\n\n DateEnv.prototype.startOf = function (m, unit) {\n if (unit === 'year') {\n return this.startOfYear(m);\n }\n\n if (unit === 'month') {\n return this.startOfMonth(m);\n }\n\n if (unit === 'week') {\n return this.startOfWeek(m);\n }\n\n if (unit === 'day') {\n return startOfDay(m);\n }\n\n if (unit === 'hour') {\n return startOfHour(m);\n }\n\n if (unit === 'minute') {\n return startOfMinute(m);\n }\n\n if (unit === 'second') {\n return startOfSecond(m);\n }\n\n return null;\n };\n\n DateEnv.prototype.startOfYear = function (m) {\n return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(m)]);\n };\n\n DateEnv.prototype.startOfMonth = function (m) {\n return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(m), this.calendarSystem.getMarkerMonth(m)]);\n };\n\n DateEnv.prototype.startOfWeek = function (m) {\n return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(m), this.calendarSystem.getMarkerMonth(m), m.getUTCDate() - (m.getUTCDay() - this.weekDow + 7) % 7]);\n }; // Week Number\n\n\n DateEnv.prototype.computeWeekNumber = function (marker) {\n if (this.weekNumberFunc) {\n return this.weekNumberFunc(this.toDate(marker));\n }\n\n return weekOfYear(marker, this.weekDow, this.weekDoy);\n }; // TODO: choke on timeZoneName: long\n\n\n DateEnv.prototype.format = function (marker, formatter, dateOptions) {\n if (dateOptions === void 0) {\n dateOptions = {};\n }\n\n return formatter.format({\n marker: marker,\n timeZoneOffset: dateOptions.forcedTzo != null ? dateOptions.forcedTzo : this.offsetForMarker(marker)\n }, this);\n };\n\n DateEnv.prototype.formatRange = function (start, end, formatter, dateOptions) {\n if (dateOptions === void 0) {\n dateOptions = {};\n }\n\n if (dateOptions.isEndExclusive) {\n end = addMs(end, -1);\n }\n\n return formatter.formatRange({\n marker: start,\n timeZoneOffset: dateOptions.forcedStartTzo != null ? dateOptions.forcedStartTzo : this.offsetForMarker(start)\n }, {\n marker: end,\n timeZoneOffset: dateOptions.forcedEndTzo != null ? dateOptions.forcedEndTzo : this.offsetForMarker(end)\n }, this, dateOptions.defaultSeparator);\n };\n /*\n DUMB: the omitTime arg is dumb. if we omit the time, we want to omit the timezone offset. and if we do that,\n might as well use buildIsoString or some other util directly\n */\n\n\n DateEnv.prototype.formatIso = function (marker, extraOptions) {\n if (extraOptions === void 0) {\n extraOptions = {};\n }\n\n var timeZoneOffset = null;\n\n if (!extraOptions.omitTimeZoneOffset) {\n if (extraOptions.forcedTzo != null) {\n timeZoneOffset = extraOptions.forcedTzo;\n } else {\n timeZoneOffset = this.offsetForMarker(marker);\n }\n }\n\n return buildIsoString(marker, timeZoneOffset, extraOptions.omitTime);\n }; // TimeZone\n\n\n DateEnv.prototype.timestampToMarker = function (ms) {\n if (this.timeZone === 'local') {\n return arrayToUtcDate(dateToLocalArray(new Date(ms)));\n }\n\n if (this.timeZone === 'UTC' || !this.namedTimeZoneImpl) {\n return new Date(ms);\n }\n\n return arrayToUtcDate(this.namedTimeZoneImpl.timestampToArray(ms));\n };\n\n DateEnv.prototype.offsetForMarker = function (m) {\n if (this.timeZone === 'local') {\n return -arrayToLocalDate(dateToUtcArray(m)).getTimezoneOffset(); // convert \"inverse\" offset to \"normal\" offset\n }\n\n if (this.timeZone === 'UTC') {\n return 0;\n }\n\n if (this.namedTimeZoneImpl) {\n return this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m));\n }\n\n return null;\n }; // Conversion\n\n\n DateEnv.prototype.toDate = function (m, forcedTzo) {\n if (this.timeZone === 'local') {\n return arrayToLocalDate(dateToUtcArray(m));\n }\n\n if (this.timeZone === 'UTC') {\n return new Date(m.valueOf()); // make sure it's a copy\n }\n\n if (!this.namedTimeZoneImpl) {\n return new Date(m.valueOf() - (forcedTzo || 0));\n }\n\n return new Date(m.valueOf() - this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m)) * 1000 * 60);\n };\n\n return DateEnv;\n}();\n\nvar globalLocales = [];\nvar MINIMAL_RAW_EN_LOCALE = {\n code: 'en',\n week: {\n dow: 0,\n doy: 4 // 4 days need to be within the year to be considered the first week\n\n },\n direction: 'ltr',\n buttonText: {\n prev: 'prev',\n next: 'next',\n prevYear: 'prev year',\n nextYear: 'next year',\n year: 'year',\n today: 'today',\n month: 'month',\n week: 'week',\n day: 'day',\n list: 'list'\n },\n weekText: 'W',\n weekTextLong: 'Week',\n closeHint: 'Close',\n timeHint: 'Time',\n eventHint: 'Event',\n allDayText: 'all-day',\n moreLinkText: 'more',\n noEventsText: 'No events to display'\n};\n\nvar RAW_EN_LOCALE = __assign(__assign({}, MINIMAL_RAW_EN_LOCALE), {\n // Includes things we don't want other locales to inherit,\n // things that derive from other translatable strings.\n buttonHints: {\n prev: 'Previous $0',\n next: 'Next $0',\n today: function today(buttonText, unit) {\n return unit === 'day' ? 'Today' : \"This \" + buttonText;\n }\n },\n viewHint: '$0 view',\n navLinkHint: 'Go to $0',\n moreLinkHint: function moreLinkHint(eventCnt) {\n return \"Show \" + eventCnt + \" more event\" + (eventCnt === 1 ? '' : 's');\n }\n});\n\nfunction organizeRawLocales(explicitRawLocales) {\n var defaultCode = explicitRawLocales.length > 0 ? explicitRawLocales[0].code : 'en';\n var allRawLocales = globalLocales.concat(explicitRawLocales);\n var rawLocaleMap = {\n en: RAW_EN_LOCALE\n };\n\n for (var _i = 0, allRawLocales_1 = allRawLocales; _i < allRawLocales_1.length; _i++) {\n var rawLocale = allRawLocales_1[_i];\n rawLocaleMap[rawLocale.code] = rawLocale;\n }\n\n return {\n map: rawLocaleMap,\n defaultCode: defaultCode\n };\n}\n\nfunction buildLocale(inputSingular, available) {\n if (_typeof(inputSingular) === 'object' && !Array.isArray(inputSingular)) {\n return parseLocale(inputSingular.code, [inputSingular.code], inputSingular);\n }\n\n return queryLocale(inputSingular, available);\n}\n\nfunction queryLocale(codeArg, available) {\n var codes = [].concat(codeArg || []); // will convert to array\n\n var raw = queryRawLocale(codes, available) || RAW_EN_LOCALE;\n return parseLocale(codeArg, codes, raw);\n}\n\nfunction queryRawLocale(codes, available) {\n for (var i = 0; i < codes.length; i += 1) {\n var parts = codes[i].toLocaleLowerCase().split('-');\n\n for (var j = parts.length; j > 0; j -= 1) {\n var simpleId = parts.slice(0, j).join('-');\n\n if (available[simpleId]) {\n return available[simpleId];\n }\n }\n }\n\n return null;\n}\n\nfunction parseLocale(codeArg, codes, raw) {\n var merged = mergeProps([MINIMAL_RAW_EN_LOCALE, raw], ['buttonText']);\n delete merged.code; // don't want this part of the options\n\n var week = merged.week;\n delete merged.week;\n return {\n codeArg: codeArg,\n codes: codes,\n week: week,\n simpleNumberFormat: new Intl.NumberFormat(codeArg),\n options: merged\n };\n}\n\nfunction formatDate(dateInput, options) {\n if (options === void 0) {\n options = {};\n }\n\n var dateEnv = buildDateEnv$1(options);\n var formatter = createFormatter(options);\n var dateMeta = dateEnv.createMarkerMeta(dateInput);\n\n if (!dateMeta) {\n // TODO: warning?\n return '';\n }\n\n return dateEnv.format(dateMeta.marker, formatter, {\n forcedTzo: dateMeta.forcedTzo\n });\n}\n\nfunction formatRange(startInput, endInput, options) {\n var dateEnv = buildDateEnv$1(_typeof(options) === 'object' && options ? options : {}); // pass in if non-null object\n\n var formatter = createFormatter(options);\n var startMeta = dateEnv.createMarkerMeta(startInput);\n var endMeta = dateEnv.createMarkerMeta(endInput);\n\n if (!startMeta || !endMeta) {\n // TODO: warning?\n return '';\n }\n\n return dateEnv.formatRange(startMeta.marker, endMeta.marker, formatter, {\n forcedStartTzo: startMeta.forcedTzo,\n forcedEndTzo: endMeta.forcedTzo,\n isEndExclusive: options.isEndExclusive,\n defaultSeparator: BASE_OPTION_DEFAULTS.defaultRangeSeparator\n });\n} // TODO: more DRY and optimized\n\n\nfunction buildDateEnv$1(settings) {\n var locale = buildLocale(settings.locale || 'en', organizeRawLocales([]).map); // TODO: don't hardcode 'en' everywhere\n\n return new DateEnv(__assign(__assign({\n timeZone: BASE_OPTION_DEFAULTS.timeZone,\n calendarSystem: 'gregory'\n }, settings), {\n locale: locale\n }));\n}\n\nvar DEF_DEFAULTS = {\n startTime: '09:00',\n endTime: '17:00',\n daysOfWeek: [1, 2, 3, 4, 5],\n display: 'inverse-background',\n classNames: 'fc-non-business',\n groupId: '_businessHours' // so multiple defs get grouped\n\n};\n/*\nTODO: pass around as EventDefHash!!!\n*/\n\nfunction parseBusinessHours(input, context) {\n return parseEvents(refineInputs(input), null, context);\n}\n\nfunction refineInputs(input) {\n var rawDefs;\n\n if (input === true) {\n rawDefs = [{}]; // will get DEF_DEFAULTS verbatim\n } else if (Array.isArray(input)) {\n // if specifying an array, every sub-definition NEEDS a day-of-week\n rawDefs = input.filter(function (rawDef) {\n return rawDef.daysOfWeek;\n });\n } else if (_typeof(input) === 'object' && input) {\n // non-null object\n rawDefs = [input];\n } else {\n // is probably false\n rawDefs = [];\n }\n\n rawDefs = rawDefs.map(function (rawDef) {\n return __assign(__assign({}, DEF_DEFAULTS), rawDef);\n });\n return rawDefs;\n}\n\nfunction pointInsideRect(point, rect) {\n return point.left >= rect.left && point.left < rect.right && point.top >= rect.top && point.top < rect.bottom;\n} // Returns a new rectangle that is the intersection of the two rectangles. If they don't intersect, returns false\n\n\nfunction intersectRects(rect1, rect2) {\n var res = {\n left: Math.max(rect1.left, rect2.left),\n right: Math.min(rect1.right, rect2.right),\n top: Math.max(rect1.top, rect2.top),\n bottom: Math.min(rect1.bottom, rect2.bottom)\n };\n\n if (res.left < res.right && res.top < res.bottom) {\n return res;\n }\n\n return false;\n}\n\nfunction translateRect(rect, deltaX, deltaY) {\n return {\n left: rect.left + deltaX,\n right: rect.right + deltaX,\n top: rect.top + deltaY,\n bottom: rect.bottom + deltaY\n };\n} // Returns a new point that will have been moved to reside within the given rectangle\n\n\nfunction constrainPoint(point, rect) {\n return {\n left: Math.min(Math.max(point.left, rect.left), rect.right),\n top: Math.min(Math.max(point.top, rect.top), rect.bottom)\n };\n} // Returns a point that is the center of the given rectangle\n\n\nfunction getRectCenter(rect) {\n return {\n left: (rect.left + rect.right) / 2,\n top: (rect.top + rect.bottom) / 2\n };\n} // Subtracts point2's coordinates from point1's coordinates, returning a delta\n\n\nfunction diffPoints(point1, point2) {\n return {\n left: point1.left - point2.left,\n top: point1.top - point2.top\n };\n}\n\nvar canVGrowWithinCell;\n\nfunction getCanVGrowWithinCell() {\n if (canVGrowWithinCell == null) {\n canVGrowWithinCell = computeCanVGrowWithinCell();\n }\n\n return canVGrowWithinCell;\n}\n\nfunction computeCanVGrowWithinCell() {\n // for SSR, because this function is call immediately at top-level\n // TODO: just make this logic execute top-level, immediately, instead of doing lazily\n if (typeof document === 'undefined') {\n return true;\n }\n\n var el = document.createElement('div');\n el.style.position = 'absolute';\n el.style.top = '0px';\n el.style.left = '0px';\n el.innerHTML = '
';\n el.querySelector('table').style.height = '100px';\n el.querySelector('div').style.height = '100%';\n document.body.appendChild(el);\n var div = el.querySelector('div');\n var possible = div.offsetHeight > 0;\n document.body.removeChild(el);\n return possible;\n}\n\nvar EMPTY_EVENT_STORE = createEmptyEventStore(); // for purecomponents. TODO: keep elsewhere\n\nvar Splitter =\n/** @class */\nfunction () {\n function Splitter() {\n this.getKeysForEventDefs = memoize(this._getKeysForEventDefs);\n this.splitDateSelection = memoize(this._splitDateSpan);\n this.splitEventStore = memoize(this._splitEventStore);\n this.splitIndividualUi = memoize(this._splitIndividualUi);\n this.splitEventDrag = memoize(this._splitInteraction);\n this.splitEventResize = memoize(this._splitInteraction);\n this.eventUiBuilders = {}; // TODO: typescript protection\n }\n\n Splitter.prototype.splitProps = function (props) {\n var _this = this;\n\n var keyInfos = this.getKeyInfo(props);\n var defKeys = this.getKeysForEventDefs(props.eventStore);\n var dateSelections = this.splitDateSelection(props.dateSelection);\n var individualUi = this.splitIndividualUi(props.eventUiBases, defKeys); // the individual *bases*\n\n var eventStores = this.splitEventStore(props.eventStore, defKeys);\n var eventDrags = this.splitEventDrag(props.eventDrag);\n var eventResizes = this.splitEventResize(props.eventResize);\n var splitProps = {};\n this.eventUiBuilders = mapHash(keyInfos, function (info, key) {\n return _this.eventUiBuilders[key] || memoize(buildEventUiForKey);\n });\n\n for (var key in keyInfos) {\n var keyInfo = keyInfos[key];\n var eventStore = eventStores[key] || EMPTY_EVENT_STORE;\n var buildEventUi = this.eventUiBuilders[key];\n splitProps[key] = {\n businessHours: keyInfo.businessHours || props.businessHours,\n dateSelection: dateSelections[key] || null,\n eventStore: eventStore,\n eventUiBases: buildEventUi(props.eventUiBases[''], keyInfo.ui, individualUi[key]),\n eventSelection: eventStore.instances[props.eventSelection] ? props.eventSelection : '',\n eventDrag: eventDrags[key] || null,\n eventResize: eventResizes[key] || null\n };\n }\n\n return splitProps;\n };\n\n Splitter.prototype._splitDateSpan = function (dateSpan) {\n var dateSpans = {};\n\n if (dateSpan) {\n var keys = this.getKeysForDateSpan(dateSpan);\n\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n dateSpans[key] = dateSpan;\n }\n }\n\n return dateSpans;\n };\n\n Splitter.prototype._getKeysForEventDefs = function (eventStore) {\n var _this = this;\n\n return mapHash(eventStore.defs, function (eventDef) {\n return _this.getKeysForEventDef(eventDef);\n });\n };\n\n Splitter.prototype._splitEventStore = function (eventStore, defKeys) {\n var defs = eventStore.defs,\n instances = eventStore.instances;\n var splitStores = {};\n\n for (var defId in defs) {\n for (var _i = 0, _a = defKeys[defId]; _i < _a.length; _i++) {\n var key = _a[_i];\n\n if (!splitStores[key]) {\n splitStores[key] = createEmptyEventStore();\n }\n\n splitStores[key].defs[defId] = defs[defId];\n }\n }\n\n for (var instanceId in instances) {\n var instance = instances[instanceId];\n\n for (var _b = 0, _c = defKeys[instance.defId]; _b < _c.length; _b++) {\n var key = _c[_b];\n\n if (splitStores[key]) {\n // must have already been created\n splitStores[key].instances[instanceId] = instance;\n }\n }\n }\n\n return splitStores;\n };\n\n Splitter.prototype._splitIndividualUi = function (eventUiBases, defKeys) {\n var splitHashes = {};\n\n for (var defId in eventUiBases) {\n if (defId) {\n // not the '' key\n for (var _i = 0, _a = defKeys[defId]; _i < _a.length; _i++) {\n var key = _a[_i];\n\n if (!splitHashes[key]) {\n splitHashes[key] = {};\n }\n\n splitHashes[key][defId] = eventUiBases[defId];\n }\n }\n }\n\n return splitHashes;\n };\n\n Splitter.prototype._splitInteraction = function (interaction) {\n var splitStates = {};\n\n if (interaction) {\n var affectedStores_1 = this._splitEventStore(interaction.affectedEvents, this._getKeysForEventDefs(interaction.affectedEvents)); // can't rely on defKeys because event data is mutated\n\n\n var mutatedKeysByDefId = this._getKeysForEventDefs(interaction.mutatedEvents);\n\n var mutatedStores_1 = this._splitEventStore(interaction.mutatedEvents, mutatedKeysByDefId);\n\n var populate = function populate(key) {\n if (!splitStates[key]) {\n splitStates[key] = {\n affectedEvents: affectedStores_1[key] || EMPTY_EVENT_STORE,\n mutatedEvents: mutatedStores_1[key] || EMPTY_EVENT_STORE,\n isEvent: interaction.isEvent\n };\n }\n };\n\n for (var key in affectedStores_1) {\n populate(key);\n }\n\n for (var key in mutatedStores_1) {\n populate(key);\n }\n }\n\n return splitStates;\n };\n\n return Splitter;\n}();\n\nfunction buildEventUiForKey(allUi, eventUiForKey, individualUi) {\n var baseParts = [];\n\n if (allUi) {\n baseParts.push(allUi);\n }\n\n if (eventUiForKey) {\n baseParts.push(eventUiForKey);\n }\n\n var stuff = {\n '': combineEventUis(baseParts)\n };\n\n if (individualUi) {\n __assign(stuff, individualUi);\n }\n\n return stuff;\n}\n\nfunction getDateMeta(date, todayRange, nowDate, dateProfile) {\n return {\n dow: date.getUTCDay(),\n isDisabled: Boolean(dateProfile && !rangeContainsMarker(dateProfile.activeRange, date)),\n isOther: Boolean(dateProfile && !rangeContainsMarker(dateProfile.currentRange, date)),\n isToday: Boolean(todayRange && rangeContainsMarker(todayRange, date)),\n isPast: Boolean(nowDate ? date < nowDate : todayRange ? date < todayRange.start : false),\n isFuture: Boolean(nowDate ? date > nowDate : todayRange ? date >= todayRange.end : false)\n };\n}\n\nfunction getDayClassNames(meta, theme) {\n var classNames = ['fc-day', \"fc-day-\" + DAY_IDS[meta.dow]];\n\n if (meta.isDisabled) {\n classNames.push('fc-day-disabled');\n } else {\n if (meta.isToday) {\n classNames.push('fc-day-today');\n classNames.push(theme.getClass('today'));\n }\n\n if (meta.isPast) {\n classNames.push('fc-day-past');\n }\n\n if (meta.isFuture) {\n classNames.push('fc-day-future');\n }\n\n if (meta.isOther) {\n classNames.push('fc-day-other');\n }\n }\n\n return classNames;\n}\n\nfunction getSlotClassNames(meta, theme) {\n var classNames = ['fc-slot', \"fc-slot-\" + DAY_IDS[meta.dow]];\n\n if (meta.isDisabled) {\n classNames.push('fc-slot-disabled');\n } else {\n if (meta.isToday) {\n classNames.push('fc-slot-today');\n classNames.push(theme.getClass('today'));\n }\n\n if (meta.isPast) {\n classNames.push('fc-slot-past');\n }\n\n if (meta.isFuture) {\n classNames.push('fc-slot-future');\n }\n }\n\n return classNames;\n}\n\nvar DAY_FORMAT = createFormatter({\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n});\nvar WEEK_FORMAT = createFormatter({\n week: 'long'\n});\n\nfunction buildNavLinkAttrs(context, dateMarker, viewType, isTabbable) {\n if (viewType === void 0) {\n viewType = 'day';\n }\n\n if (isTabbable === void 0) {\n isTabbable = true;\n }\n\n var dateEnv = context.dateEnv,\n options = context.options,\n calendarApi = context.calendarApi;\n var dateStr = dateEnv.format(dateMarker, viewType === 'week' ? WEEK_FORMAT : DAY_FORMAT);\n\n if (options.navLinks) {\n var zonedDate = dateEnv.toDate(dateMarker);\n\n var handleInteraction = function handleInteraction(ev) {\n var customAction = viewType === 'day' ? options.navLinkDayClick : viewType === 'week' ? options.navLinkWeekClick : null;\n\n if (typeof customAction === 'function') {\n customAction.call(calendarApi, dateEnv.toDate(dateMarker), ev);\n } else {\n if (typeof customAction === 'string') {\n viewType = customAction;\n }\n\n calendarApi.zoomTo(dateMarker, viewType);\n }\n };\n\n return __assign({\n title: formatWithOrdinals(options.navLinkHint, [dateStr, zonedDate], dateStr),\n 'data-navlink': ''\n }, isTabbable ? createAriaClickAttrs(handleInteraction) : {\n onClick: handleInteraction\n });\n }\n\n return {\n 'aria-label': dateStr\n };\n}\n\nvar _isRtlScrollbarOnLeft = null;\n\nfunction getIsRtlScrollbarOnLeft() {\n if (_isRtlScrollbarOnLeft === null) {\n _isRtlScrollbarOnLeft = computeIsRtlScrollbarOnLeft();\n }\n\n return _isRtlScrollbarOnLeft;\n}\n\nfunction computeIsRtlScrollbarOnLeft() {\n var outerEl = document.createElement('div');\n applyStyle(outerEl, {\n position: 'absolute',\n top: -1000,\n left: 0,\n border: 0,\n padding: 0,\n overflow: 'scroll',\n direction: 'rtl'\n });\n outerEl.innerHTML = '
';\n document.body.appendChild(outerEl);\n var innerEl = outerEl.firstChild;\n var res = innerEl.getBoundingClientRect().left > outerEl.getBoundingClientRect().left;\n removeElement(outerEl);\n return res;\n}\n\nvar _scrollbarWidths;\n\nfunction getScrollbarWidths() {\n if (!_scrollbarWidths) {\n _scrollbarWidths = computeScrollbarWidths();\n }\n\n return _scrollbarWidths;\n}\n\nfunction computeScrollbarWidths() {\n var el = document.createElement('div');\n el.style.overflow = 'scroll';\n el.style.position = 'absolute';\n el.style.top = '-9999px';\n el.style.left = '-9999px';\n document.body.appendChild(el);\n var res = computeScrollbarWidthsForEl(el);\n document.body.removeChild(el);\n return res;\n} // WARNING: will include border\n\n\nfunction computeScrollbarWidthsForEl(el) {\n return {\n x: el.offsetHeight - el.clientHeight,\n y: el.offsetWidth - el.clientWidth\n };\n}\n\nfunction computeEdges(el, getPadding) {\n if (getPadding === void 0) {\n getPadding = false;\n }\n\n var computedStyle = window.getComputedStyle(el);\n var borderLeft = parseInt(computedStyle.borderLeftWidth, 10) || 0;\n var borderRight = parseInt(computedStyle.borderRightWidth, 10) || 0;\n var borderTop = parseInt(computedStyle.borderTopWidth, 10) || 0;\n var borderBottom = parseInt(computedStyle.borderBottomWidth, 10) || 0;\n var badScrollbarWidths = computeScrollbarWidthsForEl(el); // includes border!\n\n var scrollbarLeftRight = badScrollbarWidths.y - borderLeft - borderRight;\n var scrollbarBottom = badScrollbarWidths.x - borderTop - borderBottom;\n var res = {\n borderLeft: borderLeft,\n borderRight: borderRight,\n borderTop: borderTop,\n borderBottom: borderBottom,\n scrollbarBottom: scrollbarBottom,\n scrollbarLeft: 0,\n scrollbarRight: 0\n };\n\n if (getIsRtlScrollbarOnLeft() && computedStyle.direction === 'rtl') {\n // is the scrollbar on the left side?\n res.scrollbarLeft = scrollbarLeftRight;\n } else {\n res.scrollbarRight = scrollbarLeftRight;\n }\n\n if (getPadding) {\n res.paddingLeft = parseInt(computedStyle.paddingLeft, 10) || 0;\n res.paddingRight = parseInt(computedStyle.paddingRight, 10) || 0;\n res.paddingTop = parseInt(computedStyle.paddingTop, 10) || 0;\n res.paddingBottom = parseInt(computedStyle.paddingBottom, 10) || 0;\n }\n\n return res;\n}\n\nfunction computeInnerRect(el, goWithinPadding, doFromWindowViewport) {\n if (goWithinPadding === void 0) {\n goWithinPadding = false;\n }\n\n var outerRect = doFromWindowViewport ? el.getBoundingClientRect() : computeRect(el);\n var edges = computeEdges(el, goWithinPadding);\n var res = {\n left: outerRect.left + edges.borderLeft + edges.scrollbarLeft,\n right: outerRect.right - edges.borderRight - edges.scrollbarRight,\n top: outerRect.top + edges.borderTop,\n bottom: outerRect.bottom - edges.borderBottom - edges.scrollbarBottom\n };\n\n if (goWithinPadding) {\n res.left += edges.paddingLeft;\n res.right -= edges.paddingRight;\n res.top += edges.paddingTop;\n res.bottom -= edges.paddingBottom;\n }\n\n return res;\n}\n\nfunction computeRect(el) {\n var rect = el.getBoundingClientRect();\n return {\n left: rect.left + window.pageXOffset,\n top: rect.top + window.pageYOffset,\n right: rect.right + window.pageXOffset,\n bottom: rect.bottom + window.pageYOffset\n };\n}\n\nfunction computeClippedClientRect(el) {\n var clippingParents = getClippingParents(el);\n var rect = el.getBoundingClientRect();\n\n for (var _i = 0, clippingParents_1 = clippingParents; _i < clippingParents_1.length; _i++) {\n var clippingParent = clippingParents_1[_i];\n var intersection = intersectRects(rect, clippingParent.getBoundingClientRect());\n\n if (intersection) {\n rect = intersection;\n } else {\n return null;\n }\n }\n\n return rect;\n}\n\nfunction computeHeightAndMargins(el) {\n return el.getBoundingClientRect().height + computeVMargins(el);\n}\n\nfunction computeVMargins(el) {\n var computed = window.getComputedStyle(el);\n return parseInt(computed.marginTop, 10) + parseInt(computed.marginBottom, 10);\n} // does not return window\n\n\nfunction getClippingParents(el) {\n var parents = [];\n\n while (el instanceof HTMLElement) {\n // will stop when gets to document or null\n var computedStyle = window.getComputedStyle(el);\n\n if (computedStyle.position === 'fixed') {\n break;\n }\n\n if (/(auto|scroll)/.test(computedStyle.overflow + computedStyle.overflowY + computedStyle.overflowX)) {\n parents.push(el);\n }\n\n el = el.parentNode;\n }\n\n return parents;\n} // given a function that resolves a result asynchronously.\n// the function can either call passed-in success and failure callbacks,\n// or it can return a promise.\n// if you need to pass additional params to func, bind them first.\n\n\nfunction unpromisify(func, success, failure) {\n // guard against success/failure callbacks being called more than once\n // and guard against a promise AND callback being used together.\n var isResolved = false;\n\n var wrappedSuccess = function wrappedSuccess() {\n if (!isResolved) {\n isResolved = true;\n success.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n };\n\n var wrappedFailure = function wrappedFailure() {\n if (!isResolved) {\n isResolved = true;\n\n if (failure) {\n failure.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n }\n };\n\n var res = func(wrappedSuccess, wrappedFailure);\n\n if (res && typeof res.then === 'function') {\n res.then(wrappedSuccess, wrappedFailure);\n }\n}\n\nvar Emitter =\n/** @class */\nfunction () {\n function Emitter() {\n this.handlers = {};\n this.thisContext = null;\n }\n\n Emitter.prototype.setThisContext = function (thisContext) {\n this.thisContext = thisContext;\n };\n\n Emitter.prototype.setOptions = function (options) {\n this.options = options;\n };\n\n Emitter.prototype.on = function (type, handler) {\n addToHash(this.handlers, type, handler);\n };\n\n Emitter.prototype.off = function (type, handler) {\n removeFromHash(this.handlers, type, handler);\n };\n\n Emitter.prototype.trigger = function (type) {\n var args = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n\n var attachedHandlers = this.handlers[type] || [];\n var optionHandler = this.options && this.options[type];\n var handlers = [].concat(optionHandler || [], attachedHandlers);\n\n for (var _a = 0, handlers_1 = handlers; _a < handlers_1.length; _a++) {\n var handler = handlers_1[_a];\n handler.apply(this.thisContext, args);\n }\n };\n\n Emitter.prototype.hasHandlers = function (type) {\n return Boolean(this.handlers[type] && this.handlers[type].length || this.options && this.options[type]);\n };\n\n return Emitter;\n}();\n\nfunction addToHash(hash, type, handler) {\n (hash[type] || (hash[type] = [])).push(handler);\n}\n\nfunction removeFromHash(hash, type, handler) {\n if (handler) {\n if (hash[type]) {\n hash[type] = hash[type].filter(function (func) {\n return func !== handler;\n });\n }\n } else {\n delete hash[type]; // remove all handler funcs for this type\n }\n}\n/*\nRecords offset information for a set of elements, relative to an origin element.\nCan record the left/right OR the top/bottom OR both.\nProvides methods for querying the cache by position.\n*/\n\n\nvar PositionCache =\n/** @class */\nfunction () {\n function PositionCache(originEl, els, isHorizontal, isVertical) {\n this.els = els;\n var originClientRect = this.originClientRect = originEl.getBoundingClientRect(); // relative to viewport top-left\n\n if (isHorizontal) {\n this.buildElHorizontals(originClientRect.left);\n }\n\n if (isVertical) {\n this.buildElVerticals(originClientRect.top);\n }\n } // Populates the left/right internal coordinate arrays\n\n\n PositionCache.prototype.buildElHorizontals = function (originClientLeft) {\n var lefts = [];\n var rights = [];\n\n for (var _i = 0, _a = this.els; _i < _a.length; _i++) {\n var el = _a[_i];\n var rect = el.getBoundingClientRect();\n lefts.push(rect.left - originClientLeft);\n rights.push(rect.right - originClientLeft);\n }\n\n this.lefts = lefts;\n this.rights = rights;\n }; // Populates the top/bottom internal coordinate arrays\n\n\n PositionCache.prototype.buildElVerticals = function (originClientTop) {\n var tops = [];\n var bottoms = [];\n\n for (var _i = 0, _a = this.els; _i < _a.length; _i++) {\n var el = _a[_i];\n var rect = el.getBoundingClientRect();\n tops.push(rect.top - originClientTop);\n bottoms.push(rect.bottom - originClientTop);\n }\n\n this.tops = tops;\n this.bottoms = bottoms;\n }; // Given a left offset (from document left), returns the index of the el that it horizontally intersects.\n // If no intersection is made, returns undefined.\n\n\n PositionCache.prototype.leftToIndex = function (leftPosition) {\n var _a = this,\n lefts = _a.lefts,\n rights = _a.rights;\n\n var len = lefts.length;\n var i;\n\n for (i = 0; i < len; i += 1) {\n if (leftPosition >= lefts[i] && leftPosition < rights[i]) {\n return i;\n }\n }\n\n return undefined; // TODO: better\n }; // Given a top offset (from document top), returns the index of the el that it vertically intersects.\n // If no intersection is made, returns undefined.\n\n\n PositionCache.prototype.topToIndex = function (topPosition) {\n var _a = this,\n tops = _a.tops,\n bottoms = _a.bottoms;\n\n var len = tops.length;\n var i;\n\n for (i = 0; i < len; i += 1) {\n if (topPosition >= tops[i] && topPosition < bottoms[i]) {\n return i;\n }\n }\n\n return undefined; // TODO: better\n }; // Gets the width of the element at the given index\n\n\n PositionCache.prototype.getWidth = function (leftIndex) {\n return this.rights[leftIndex] - this.lefts[leftIndex];\n }; // Gets the height of the element at the given index\n\n\n PositionCache.prototype.getHeight = function (topIndex) {\n return this.bottoms[topIndex] - this.tops[topIndex];\n };\n\n return PositionCache;\n}();\n/* eslint max-classes-per-file: \"off\" */\n\n/*\nAn object for getting/setting scroll-related information for an element.\nInternally, this is done very differently for window versus DOM element,\nso this object serves as a common interface.\n*/\n\n\nvar ScrollController =\n/** @class */\nfunction () {\n function ScrollController() {}\n\n ScrollController.prototype.getMaxScrollTop = function () {\n return this.getScrollHeight() - this.getClientHeight();\n };\n\n ScrollController.prototype.getMaxScrollLeft = function () {\n return this.getScrollWidth() - this.getClientWidth();\n };\n\n ScrollController.prototype.canScrollVertically = function () {\n return this.getMaxScrollTop() > 0;\n };\n\n ScrollController.prototype.canScrollHorizontally = function () {\n return this.getMaxScrollLeft() > 0;\n };\n\n ScrollController.prototype.canScrollUp = function () {\n return this.getScrollTop() > 0;\n };\n\n ScrollController.prototype.canScrollDown = function () {\n return this.getScrollTop() < this.getMaxScrollTop();\n };\n\n ScrollController.prototype.canScrollLeft = function () {\n return this.getScrollLeft() > 0;\n };\n\n ScrollController.prototype.canScrollRight = function () {\n return this.getScrollLeft() < this.getMaxScrollLeft();\n };\n\n return ScrollController;\n}();\n\nvar ElementScrollController =\n/** @class */\nfunction (_super) {\n __extends(ElementScrollController, _super);\n\n function ElementScrollController(el) {\n var _this = _super.call(this) || this;\n\n _this.el = el;\n return _this;\n }\n\n ElementScrollController.prototype.getScrollTop = function () {\n return this.el.scrollTop;\n };\n\n ElementScrollController.prototype.getScrollLeft = function () {\n return this.el.scrollLeft;\n };\n\n ElementScrollController.prototype.setScrollTop = function (top) {\n this.el.scrollTop = top;\n };\n\n ElementScrollController.prototype.setScrollLeft = function (left) {\n this.el.scrollLeft = left;\n };\n\n ElementScrollController.prototype.getScrollWidth = function () {\n return this.el.scrollWidth;\n };\n\n ElementScrollController.prototype.getScrollHeight = function () {\n return this.el.scrollHeight;\n };\n\n ElementScrollController.prototype.getClientHeight = function () {\n return this.el.clientHeight;\n };\n\n ElementScrollController.prototype.getClientWidth = function () {\n return this.el.clientWidth;\n };\n\n return ElementScrollController;\n}(ScrollController);\n\nvar WindowScrollController =\n/** @class */\nfunction (_super) {\n __extends(WindowScrollController, _super);\n\n function WindowScrollController() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n WindowScrollController.prototype.getScrollTop = function () {\n return window.pageYOffset;\n };\n\n WindowScrollController.prototype.getScrollLeft = function () {\n return window.pageXOffset;\n };\n\n WindowScrollController.prototype.setScrollTop = function (n) {\n window.scroll(window.pageXOffset, n);\n };\n\n WindowScrollController.prototype.setScrollLeft = function (n) {\n window.scroll(n, window.pageYOffset);\n };\n\n WindowScrollController.prototype.getScrollWidth = function () {\n return document.documentElement.scrollWidth;\n };\n\n WindowScrollController.prototype.getScrollHeight = function () {\n return document.documentElement.scrollHeight;\n };\n\n WindowScrollController.prototype.getClientHeight = function () {\n return document.documentElement.clientHeight;\n };\n\n WindowScrollController.prototype.getClientWidth = function () {\n return document.documentElement.clientWidth;\n };\n\n return WindowScrollController;\n}(ScrollController);\n\nvar Theme =\n/** @class */\nfunction () {\n function Theme(calendarOptions) {\n if (this.iconOverrideOption) {\n this.setIconOverride(calendarOptions[this.iconOverrideOption]);\n }\n }\n\n Theme.prototype.setIconOverride = function (iconOverrideHash) {\n var iconClassesCopy;\n var buttonName;\n\n if (_typeof(iconOverrideHash) === 'object' && iconOverrideHash) {\n // non-null object\n iconClassesCopy = __assign({}, this.iconClasses);\n\n for (buttonName in iconOverrideHash) {\n iconClassesCopy[buttonName] = this.applyIconOverridePrefix(iconOverrideHash[buttonName]);\n }\n\n this.iconClasses = iconClassesCopy;\n } else if (iconOverrideHash === false) {\n this.iconClasses = {};\n }\n };\n\n Theme.prototype.applyIconOverridePrefix = function (className) {\n var prefix = this.iconOverridePrefix;\n\n if (prefix && className.indexOf(prefix) !== 0) {\n // if not already present\n className = prefix + className;\n }\n\n return className;\n };\n\n Theme.prototype.getClass = function (key) {\n return this.classes[key] || '';\n };\n\n Theme.prototype.getIconClass = function (buttonName, isRtl) {\n var className;\n\n if (isRtl && this.rtlIconClasses) {\n className = this.rtlIconClasses[buttonName] || this.iconClasses[buttonName];\n } else {\n className = this.iconClasses[buttonName];\n }\n\n if (className) {\n return this.baseIconClass + \" \" + className;\n }\n\n return '';\n };\n\n Theme.prototype.getCustomButtonIconClass = function (customButtonProps) {\n var className;\n\n if (this.iconOverrideCustomButtonOption) {\n className = customButtonProps[this.iconOverrideCustomButtonOption];\n\n if (className) {\n return this.baseIconClass + \" \" + this.applyIconOverridePrefix(className);\n }\n }\n\n return '';\n };\n\n return Theme;\n}();\n\nTheme.prototype.classes = {};\nTheme.prototype.iconClasses = {};\nTheme.prototype.baseIconClass = '';\nTheme.prototype.iconOverridePrefix = '';\n\nvar ScrollResponder =\n/** @class */\nfunction () {\n function ScrollResponder(execFunc, emitter, scrollTime, scrollTimeReset) {\n var _this = this;\n\n this.execFunc = execFunc;\n this.emitter = emitter;\n this.scrollTime = scrollTime;\n this.scrollTimeReset = scrollTimeReset;\n\n this.handleScrollRequest = function (request) {\n _this.queuedRequest = __assign({}, _this.queuedRequest || {}, request);\n\n _this.drain();\n };\n\n emitter.on('_scrollRequest', this.handleScrollRequest);\n this.fireInitialScroll();\n }\n\n ScrollResponder.prototype.detach = function () {\n this.emitter.off('_scrollRequest', this.handleScrollRequest);\n };\n\n ScrollResponder.prototype.update = function (isDatesNew) {\n if (isDatesNew && this.scrollTimeReset) {\n this.fireInitialScroll(); // will drain\n } else {\n this.drain();\n }\n };\n\n ScrollResponder.prototype.fireInitialScroll = function () {\n this.handleScrollRequest({\n time: this.scrollTime\n });\n };\n\n ScrollResponder.prototype.drain = function () {\n if (this.queuedRequest && this.execFunc(this.queuedRequest)) {\n this.queuedRequest = null;\n }\n };\n\n return ScrollResponder;\n}();\n\nvar ViewContextType = createContext({}); // for Components\n\nfunction buildViewContext(viewSpec, viewApi, viewOptions, dateProfileGenerator, dateEnv, theme, pluginHooks, dispatch, getCurrentData, emitter, calendarApi, registerInteractiveComponent, unregisterInteractiveComponent) {\n return {\n dateEnv: dateEnv,\n options: viewOptions,\n pluginHooks: pluginHooks,\n emitter: emitter,\n dispatch: dispatch,\n getCurrentData: getCurrentData,\n calendarApi: calendarApi,\n viewSpec: viewSpec,\n viewApi: viewApi,\n dateProfileGenerator: dateProfileGenerator,\n theme: theme,\n isRtl: viewOptions.direction === 'rtl',\n addResizeHandler: function addResizeHandler(handler) {\n emitter.on('_resize', handler);\n },\n removeResizeHandler: function removeResizeHandler(handler) {\n emitter.off('_resize', handler);\n },\n createScrollResponder: function createScrollResponder(execFunc) {\n return new ScrollResponder(execFunc, emitter, createDuration(viewOptions.scrollTime), viewOptions.scrollTimeReset);\n },\n registerInteractiveComponent: registerInteractiveComponent,\n unregisterInteractiveComponent: unregisterInteractiveComponent\n };\n}\n/* eslint max-classes-per-file: off */\n\n\nvar PureComponent =\n/** @class */\nfunction (_super) {\n __extends(PureComponent, _super);\n\n function PureComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n PureComponent.prototype.shouldComponentUpdate = function (nextProps, nextState) {\n if (this.debug) {\n // eslint-disable-next-line no-console\n console.log(getUnequalProps(nextProps, this.props), getUnequalProps(nextState, this.state));\n }\n\n return !compareObjs(this.props, nextProps, this.propEquality) || !compareObjs(this.state, nextState, this.stateEquality);\n };\n\n PureComponent.addPropsEquality = addPropsEquality;\n PureComponent.addStateEquality = addStateEquality;\n PureComponent.contextType = ViewContextType;\n return PureComponent;\n}(Component);\n\nPureComponent.prototype.propEquality = {};\nPureComponent.prototype.stateEquality = {};\n\nvar BaseComponent =\n/** @class */\nfunction (_super) {\n __extends(BaseComponent, _super);\n\n function BaseComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n BaseComponent.contextType = ViewContextType;\n return BaseComponent;\n}(PureComponent);\n\nfunction addPropsEquality(propEquality) {\n var hash = Object.create(this.prototype.propEquality);\n\n __assign(hash, propEquality);\n\n this.prototype.propEquality = hash;\n}\n\nfunction addStateEquality(stateEquality) {\n var hash = Object.create(this.prototype.stateEquality);\n\n __assign(hash, stateEquality);\n\n this.prototype.stateEquality = hash;\n} // use other one\n\n\nfunction setRef(ref, current) {\n if (typeof ref === 'function') {\n ref(current);\n } else if (ref) {\n // see https://github.com/facebook/react/issues/13029\n ref.current = current;\n }\n}\n/*\nan INTERACTABLE date component\n\nPURPOSES:\n- hook up to fg, fill, and mirror renderers\n- interface for dragging and hits\n*/\n\n\nvar DateComponent =\n/** @class */\nfunction (_super) {\n __extends(DateComponent, _super);\n\n function DateComponent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.uid = guid();\n return _this;\n } // Hit System\n // -----------------------------------------------------------------------------------------------------------------\n\n\n DateComponent.prototype.prepareHits = function () {};\n\n DateComponent.prototype.queryHit = function (positionLeft, positionTop, elWidth, elHeight) {\n return null; // this should be abstract\n }; // Pointer Interaction Utils\n // -----------------------------------------------------------------------------------------------------------------\n\n\n DateComponent.prototype.isValidSegDownEl = function (el) {\n return !this.props.eventDrag && // HACK\n !this.props.eventResize && // HACK\n !elementClosest(el, '.fc-event-mirror');\n };\n\n DateComponent.prototype.isValidDateDownEl = function (el) {\n return !elementClosest(el, '.fc-event:not(.fc-bg-event)') && !elementClosest(el, '.fc-more-link') && // a \"more..\" link\n !elementClosest(el, 'a[data-navlink]') && // a clickable nav link\n !elementClosest(el, '.fc-popover'); // hack\n };\n\n return DateComponent;\n}(BaseComponent); // TODO: easier way to add new hooks? need to update a million things\n\n\nfunction createPlugin(input) {\n return {\n id: guid(),\n deps: input.deps || [],\n reducers: input.reducers || [],\n isLoadingFuncs: input.isLoadingFuncs || [],\n contextInit: [].concat(input.contextInit || []),\n eventRefiners: input.eventRefiners || {},\n eventDefMemberAdders: input.eventDefMemberAdders || [],\n eventSourceRefiners: input.eventSourceRefiners || {},\n isDraggableTransformers: input.isDraggableTransformers || [],\n eventDragMutationMassagers: input.eventDragMutationMassagers || [],\n eventDefMutationAppliers: input.eventDefMutationAppliers || [],\n dateSelectionTransformers: input.dateSelectionTransformers || [],\n datePointTransforms: input.datePointTransforms || [],\n dateSpanTransforms: input.dateSpanTransforms || [],\n views: input.views || {},\n viewPropsTransformers: input.viewPropsTransformers || [],\n isPropsValid: input.isPropsValid || null,\n externalDefTransforms: input.externalDefTransforms || [],\n viewContainerAppends: input.viewContainerAppends || [],\n eventDropTransformers: input.eventDropTransformers || [],\n componentInteractions: input.componentInteractions || [],\n calendarInteractions: input.calendarInteractions || [],\n themeClasses: input.themeClasses || {},\n eventSourceDefs: input.eventSourceDefs || [],\n cmdFormatter: input.cmdFormatter,\n recurringTypes: input.recurringTypes || [],\n namedTimeZonedImpl: input.namedTimeZonedImpl,\n initialView: input.initialView || '',\n elementDraggingImpl: input.elementDraggingImpl,\n optionChangeHandlers: input.optionChangeHandlers || {},\n scrollGridImpl: input.scrollGridImpl || null,\n contentTypeHandlers: input.contentTypeHandlers || {},\n listenerRefiners: input.listenerRefiners || {},\n optionRefiners: input.optionRefiners || {},\n propSetHandlers: input.propSetHandlers || {}\n };\n}\n\nfunction buildPluginHooks(pluginDefs, globalDefs) {\n var isAdded = {};\n var hooks = {\n reducers: [],\n isLoadingFuncs: [],\n contextInit: [],\n eventRefiners: {},\n eventDefMemberAdders: [],\n eventSourceRefiners: {},\n isDraggableTransformers: [],\n eventDragMutationMassagers: [],\n eventDefMutationAppliers: [],\n dateSelectionTransformers: [],\n datePointTransforms: [],\n dateSpanTransforms: [],\n views: {},\n viewPropsTransformers: [],\n isPropsValid: null,\n externalDefTransforms: [],\n viewContainerAppends: [],\n eventDropTransformers: [],\n componentInteractions: [],\n calendarInteractions: [],\n themeClasses: {},\n eventSourceDefs: [],\n cmdFormatter: null,\n recurringTypes: [],\n namedTimeZonedImpl: null,\n initialView: '',\n elementDraggingImpl: null,\n optionChangeHandlers: {},\n scrollGridImpl: null,\n contentTypeHandlers: {},\n listenerRefiners: {},\n optionRefiners: {},\n propSetHandlers: {}\n };\n\n function addDefs(defs) {\n for (var _i = 0, defs_1 = defs; _i < defs_1.length; _i++) {\n var def = defs_1[_i];\n\n if (!isAdded[def.id]) {\n isAdded[def.id] = true;\n addDefs(def.deps);\n hooks = combineHooks(hooks, def);\n }\n }\n }\n\n if (pluginDefs) {\n addDefs(pluginDefs);\n }\n\n addDefs(globalDefs);\n return hooks;\n}\n\nfunction buildBuildPluginHooks() {\n var currentOverrideDefs = [];\n var currentGlobalDefs = [];\n var currentHooks;\n return function (overrideDefs, globalDefs) {\n if (!currentHooks || !isArraysEqual(overrideDefs, currentOverrideDefs) || !isArraysEqual(globalDefs, currentGlobalDefs)) {\n currentHooks = buildPluginHooks(overrideDefs, globalDefs);\n }\n\n currentOverrideDefs = overrideDefs;\n currentGlobalDefs = globalDefs;\n return currentHooks;\n };\n}\n\nfunction combineHooks(hooks0, hooks1) {\n return {\n reducers: hooks0.reducers.concat(hooks1.reducers),\n isLoadingFuncs: hooks0.isLoadingFuncs.concat(hooks1.isLoadingFuncs),\n contextInit: hooks0.contextInit.concat(hooks1.contextInit),\n eventRefiners: __assign(__assign({}, hooks0.eventRefiners), hooks1.eventRefiners),\n eventDefMemberAdders: hooks0.eventDefMemberAdders.concat(hooks1.eventDefMemberAdders),\n eventSourceRefiners: __assign(__assign({}, hooks0.eventSourceRefiners), hooks1.eventSourceRefiners),\n isDraggableTransformers: hooks0.isDraggableTransformers.concat(hooks1.isDraggableTransformers),\n eventDragMutationMassagers: hooks0.eventDragMutationMassagers.concat(hooks1.eventDragMutationMassagers),\n eventDefMutationAppliers: hooks0.eventDefMutationAppliers.concat(hooks1.eventDefMutationAppliers),\n dateSelectionTransformers: hooks0.dateSelectionTransformers.concat(hooks1.dateSelectionTransformers),\n datePointTransforms: hooks0.datePointTransforms.concat(hooks1.datePointTransforms),\n dateSpanTransforms: hooks0.dateSpanTransforms.concat(hooks1.dateSpanTransforms),\n views: __assign(__assign({}, hooks0.views), hooks1.views),\n viewPropsTransformers: hooks0.viewPropsTransformers.concat(hooks1.viewPropsTransformers),\n isPropsValid: hooks1.isPropsValid || hooks0.isPropsValid,\n externalDefTransforms: hooks0.externalDefTransforms.concat(hooks1.externalDefTransforms),\n viewContainerAppends: hooks0.viewContainerAppends.concat(hooks1.viewContainerAppends),\n eventDropTransformers: hooks0.eventDropTransformers.concat(hooks1.eventDropTransformers),\n calendarInteractions: hooks0.calendarInteractions.concat(hooks1.calendarInteractions),\n componentInteractions: hooks0.componentInteractions.concat(hooks1.componentInteractions),\n themeClasses: __assign(__assign({}, hooks0.themeClasses), hooks1.themeClasses),\n eventSourceDefs: hooks0.eventSourceDefs.concat(hooks1.eventSourceDefs),\n cmdFormatter: hooks1.cmdFormatter || hooks0.cmdFormatter,\n recurringTypes: hooks0.recurringTypes.concat(hooks1.recurringTypes),\n namedTimeZonedImpl: hooks1.namedTimeZonedImpl || hooks0.namedTimeZonedImpl,\n initialView: hooks0.initialView || hooks1.initialView,\n elementDraggingImpl: hooks0.elementDraggingImpl || hooks1.elementDraggingImpl,\n optionChangeHandlers: __assign(__assign({}, hooks0.optionChangeHandlers), hooks1.optionChangeHandlers),\n scrollGridImpl: hooks1.scrollGridImpl || hooks0.scrollGridImpl,\n contentTypeHandlers: __assign(__assign({}, hooks0.contentTypeHandlers), hooks1.contentTypeHandlers),\n listenerRefiners: __assign(__assign({}, hooks0.listenerRefiners), hooks1.listenerRefiners),\n optionRefiners: __assign(__assign({}, hooks0.optionRefiners), hooks1.optionRefiners),\n propSetHandlers: __assign(__assign({}, hooks0.propSetHandlers), hooks1.propSetHandlers)\n };\n}\n\nvar StandardTheme =\n/** @class */\nfunction (_super) {\n __extends(StandardTheme, _super);\n\n function StandardTheme() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n return StandardTheme;\n}(Theme);\n\nStandardTheme.prototype.classes = {\n root: 'fc-theme-standard',\n tableCellShaded: 'fc-cell-shaded',\n buttonGroup: 'fc-button-group',\n button: 'fc-button fc-button-primary',\n buttonActive: 'fc-button-active'\n};\nStandardTheme.prototype.baseIconClass = 'fc-icon';\nStandardTheme.prototype.iconClasses = {\n close: 'fc-icon-x',\n prev: 'fc-icon-chevron-left',\n next: 'fc-icon-chevron-right',\n prevYear: 'fc-icon-chevrons-left',\n nextYear: 'fc-icon-chevrons-right'\n};\nStandardTheme.prototype.rtlIconClasses = {\n prev: 'fc-icon-chevron-right',\n next: 'fc-icon-chevron-left',\n prevYear: 'fc-icon-chevrons-right',\n nextYear: 'fc-icon-chevrons-left'\n};\nStandardTheme.prototype.iconOverrideOption = 'buttonIcons'; // TODO: make TS-friendly\n\nStandardTheme.prototype.iconOverrideCustomButtonOption = 'icon';\nStandardTheme.prototype.iconOverridePrefix = 'fc-icon-';\n\nfunction compileViewDefs(defaultConfigs, overrideConfigs) {\n var hash = {};\n var viewType;\n\n for (viewType in defaultConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n }\n\n for (viewType in overrideConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n }\n\n return hash;\n}\n\nfunction ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n if (hash[viewType]) {\n return hash[viewType];\n }\n\n var viewDef = buildViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n\n if (viewDef) {\n hash[viewType] = viewDef;\n }\n\n return viewDef;\n}\n\nfunction buildViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n var defaultConfig = defaultConfigs[viewType];\n var overrideConfig = overrideConfigs[viewType];\n\n var queryProp = function queryProp(name) {\n return defaultConfig && defaultConfig[name] !== null ? defaultConfig[name] : overrideConfig && overrideConfig[name] !== null ? overrideConfig[name] : null;\n };\n\n var theComponent = queryProp('component');\n var superType = queryProp('superType');\n var superDef = null;\n\n if (superType) {\n if (superType === viewType) {\n throw new Error('Can\\'t have a custom view type that references itself');\n }\n\n superDef = ensureViewDef(superType, hash, defaultConfigs, overrideConfigs);\n }\n\n if (!theComponent && superDef) {\n theComponent = superDef.component;\n }\n\n if (!theComponent) {\n return null; // don't throw a warning, might be settings for a single-unit view\n }\n\n return {\n type: viewType,\n component: theComponent,\n defaults: __assign(__assign({}, superDef ? superDef.defaults : {}), defaultConfig ? defaultConfig.rawOptions : {}),\n overrides: __assign(__assign({}, superDef ? superDef.overrides : {}), overrideConfig ? overrideConfig.rawOptions : {})\n };\n}\n/* eslint max-classes-per-file: off */\n// NOTE: in JSX, you should always use this class with arg. otherwise, will default to any???\n\n\nvar RenderHook =\n/** @class */\nfunction (_super) {\n __extends(RenderHook, _super);\n\n function RenderHook() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.rootElRef = createRef();\n\n _this.handleRootEl = function (el) {\n setRef(_this.rootElRef, el);\n\n if (_this.props.elRef) {\n setRef(_this.props.elRef, el);\n }\n };\n\n return _this;\n }\n\n RenderHook.prototype.render = function () {\n var _this = this;\n\n var props = this.props;\n var hookProps = props.hookProps;\n return createElement(MountHook, {\n hookProps: hookProps,\n didMount: props.didMount,\n willUnmount: props.willUnmount,\n elRef: this.handleRootEl\n }, function (rootElRef) {\n return createElement(ContentHook, {\n hookProps: hookProps,\n content: props.content,\n defaultContent: props.defaultContent,\n backupElRef: _this.rootElRef\n }, function (innerElRef, innerContent) {\n return props.children(rootElRef, normalizeClassNames(props.classNames, hookProps), innerElRef, innerContent);\n });\n });\n };\n\n return RenderHook;\n}(BaseComponent); // TODO: rename to be about function, not default. use in above type\n// for forcing rerender of components that use the ContentHook\n\n\nvar CustomContentRenderContext = createContext(0);\n\nfunction ContentHook(props) {\n return createElement(CustomContentRenderContext.Consumer, null, function (renderId) {\n return createElement(ContentHookInner, __assign({\n renderId: renderId\n }, props));\n });\n}\n\nvar ContentHookInner =\n/** @class */\nfunction (_super) {\n __extends(ContentHookInner, _super);\n\n function ContentHookInner() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.innerElRef = createRef();\n return _this;\n }\n\n ContentHookInner.prototype.render = function () {\n return this.props.children(this.innerElRef, this.renderInnerContent());\n };\n\n ContentHookInner.prototype.componentDidMount = function () {\n this.updateCustomContent();\n };\n\n ContentHookInner.prototype.componentDidUpdate = function () {\n this.updateCustomContent();\n };\n\n ContentHookInner.prototype.componentWillUnmount = function () {\n if (this.customContentInfo && this.customContentInfo.destroy) {\n this.customContentInfo.destroy();\n }\n };\n\n ContentHookInner.prototype.renderInnerContent = function () {\n var customContentInfo = this.customContentInfo; // only populated if using non-[p]react node(s)\n\n var innerContent = this.getInnerContent();\n var meta = this.getContentMeta(innerContent); // initial run, or content-type changing? (from vue -> react for example)\n\n if (!customContentInfo || customContentInfo.contentKey !== meta.contentKey) {\n // clearing old value\n if (customContentInfo) {\n if (customContentInfo.destroy) {\n customContentInfo.destroy();\n }\n\n customContentInfo = this.customContentInfo = null;\n } // assigning new value\n\n\n if (meta.contentKey) {\n customContentInfo = this.customContentInfo = __assign({\n contentKey: meta.contentKey,\n contentVal: innerContent[meta.contentKey]\n }, meta.buildLifecycleFuncs());\n } // updating\n\n } else if (customContentInfo) {\n customContentInfo.contentVal = innerContent[meta.contentKey];\n }\n\n return customContentInfo ? [] // signal that something was specified\n : innerContent; // assume a [p]react vdom node. use it\n };\n\n ContentHookInner.prototype.getInnerContent = function () {\n var props = this.props;\n var innerContent = normalizeContent(props.content, props.hookProps);\n\n if (innerContent === undefined) {\n // use the default\n innerContent = normalizeContent(props.defaultContent, props.hookProps);\n }\n\n return innerContent == null ? null : innerContent; // convert undefined to null (better for React)\n };\n\n ContentHookInner.prototype.getContentMeta = function (innerContent) {\n var contentTypeHandlers = this.context.pluginHooks.contentTypeHandlers;\n var contentKey = '';\n var buildLifecycleFuncs = null;\n\n if (innerContent) {\n // allowed to be null, for convenience to caller\n for (var searchKey in contentTypeHandlers) {\n if (innerContent[searchKey] !== undefined) {\n contentKey = searchKey;\n buildLifecycleFuncs = contentTypeHandlers[searchKey];\n break;\n }\n }\n }\n\n return {\n contentKey: contentKey,\n buildLifecycleFuncs: buildLifecycleFuncs\n };\n };\n\n ContentHookInner.prototype.updateCustomContent = function () {\n if (this.customContentInfo) {\n // for non-[p]react\n this.customContentInfo.render(this.innerElRef.current || this.props.backupElRef.current, // the element to render into\n this.customContentInfo.contentVal);\n }\n };\n\n return ContentHookInner;\n}(BaseComponent);\n\nvar MountHook =\n/** @class */\nfunction (_super) {\n __extends(MountHook, _super);\n\n function MountHook() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.handleRootEl = function (rootEl) {\n _this.rootEl = rootEl;\n\n if (_this.props.elRef) {\n setRef(_this.props.elRef, rootEl);\n }\n };\n\n return _this;\n }\n\n MountHook.prototype.render = function () {\n return this.props.children(this.handleRootEl);\n };\n\n MountHook.prototype.componentDidMount = function () {\n var callback = this.props.didMount;\n\n if (callback) {\n callback(__assign(__assign({}, this.props.hookProps), {\n el: this.rootEl\n }));\n }\n };\n\n MountHook.prototype.componentWillUnmount = function () {\n var callback = this.props.willUnmount;\n\n if (callback) {\n callback(__assign(__assign({}, this.props.hookProps), {\n el: this.rootEl\n }));\n }\n };\n\n return MountHook;\n}(BaseComponent);\n\nfunction buildClassNameNormalizer() {\n var currentGenerator;\n var currentHookProps;\n var currentClassNames = [];\n return function (generator, hookProps) {\n if (!currentHookProps || !isPropsEqual(currentHookProps, hookProps) || generator !== currentGenerator) {\n currentGenerator = generator;\n currentHookProps = hookProps;\n currentClassNames = normalizeClassNames(generator, hookProps);\n }\n\n return currentClassNames;\n };\n}\n\nfunction normalizeClassNames(classNames, hookProps) {\n if (typeof classNames === 'function') {\n classNames = classNames(hookProps);\n }\n\n return parseClassNames(classNames);\n}\n\nfunction normalizeContent(input, hookProps) {\n if (typeof input === 'function') {\n return input(hookProps, createElement); // give the function the vdom-creation func\n }\n\n return input;\n}\n\nvar ViewRoot =\n/** @class */\nfunction (_super) {\n __extends(ViewRoot, _super);\n\n function ViewRoot() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.normalizeClassNames = buildClassNameNormalizer();\n return _this;\n }\n\n ViewRoot.prototype.render = function () {\n var _a = this,\n props = _a.props,\n context = _a.context;\n\n var options = context.options;\n var hookProps = {\n view: context.viewApi\n };\n var customClassNames = this.normalizeClassNames(options.viewClassNames, hookProps);\n return createElement(MountHook, {\n hookProps: hookProps,\n didMount: options.viewDidMount,\n willUnmount: options.viewWillUnmount,\n elRef: props.elRef\n }, function (rootElRef) {\n return props.children(rootElRef, [\"fc-\" + props.viewSpec.type + \"-view\", 'fc-view'].concat(customClassNames));\n });\n };\n\n return ViewRoot;\n}(BaseComponent);\n\nfunction parseViewConfigs(inputs) {\n return mapHash(inputs, parseViewConfig);\n}\n\nfunction parseViewConfig(input) {\n var rawOptions = typeof input === 'function' ? {\n component: input\n } : input;\n var component = rawOptions.component;\n\n if (rawOptions.content) {\n component = createViewHookComponent(rawOptions); // TODO: remove content/classNames/didMount/etc from options?\n }\n\n return {\n superType: rawOptions.type,\n component: component,\n rawOptions: rawOptions\n };\n}\n\nfunction createViewHookComponent(options) {\n return function (viewProps) {\n return createElement(ViewContextType.Consumer, null, function (context) {\n return createElement(ViewRoot, {\n viewSpec: context.viewSpec\n }, function (viewElRef, viewClassNames) {\n var hookProps = __assign(__assign({}, viewProps), {\n nextDayThreshold: context.options.nextDayThreshold\n });\n\n return createElement(RenderHook, {\n hookProps: hookProps,\n classNames: options.classNames,\n content: options.content,\n didMount: options.didMount,\n willUnmount: options.willUnmount,\n elRef: viewElRef\n }, function (rootElRef, customClassNames, innerElRef, innerContent) {\n return createElement(\"div\", {\n className: viewClassNames.concat(customClassNames).join(' '),\n ref: rootElRef\n }, innerContent);\n });\n });\n });\n };\n}\n\nfunction buildViewSpecs(defaultInputs, optionOverrides, dynamicOptionOverrides, localeDefaults) {\n var defaultConfigs = parseViewConfigs(defaultInputs);\n var overrideConfigs = parseViewConfigs(optionOverrides.views);\n var viewDefs = compileViewDefs(defaultConfigs, overrideConfigs);\n return mapHash(viewDefs, function (viewDef) {\n return buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults);\n });\n}\n\nfunction buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults) {\n var durationInput = viewDef.overrides.duration || viewDef.defaults.duration || dynamicOptionOverrides.duration || optionOverrides.duration;\n var duration = null;\n var durationUnit = '';\n var singleUnit = '';\n var singleUnitOverrides = {};\n\n if (durationInput) {\n duration = createDurationCached(durationInput);\n\n if (duration) {\n // valid?\n var denom = greatestDurationDenominator(duration);\n durationUnit = denom.unit;\n\n if (denom.value === 1) {\n singleUnit = durationUnit;\n singleUnitOverrides = overrideConfigs[durationUnit] ? overrideConfigs[durationUnit].rawOptions : {};\n }\n }\n }\n\n var queryButtonText = function queryButtonText(optionsSubset) {\n var buttonTextMap = optionsSubset.buttonText || {};\n var buttonTextKey = viewDef.defaults.buttonTextKey;\n\n if (buttonTextKey != null && buttonTextMap[buttonTextKey] != null) {\n return buttonTextMap[buttonTextKey];\n }\n\n if (buttonTextMap[viewDef.type] != null) {\n return buttonTextMap[viewDef.type];\n }\n\n if (buttonTextMap[singleUnit] != null) {\n return buttonTextMap[singleUnit];\n }\n\n return null;\n };\n\n var queryButtonTitle = function queryButtonTitle(optionsSubset) {\n var buttonHints = optionsSubset.buttonHints || {};\n var buttonKey = viewDef.defaults.buttonTextKey; // use same key as text\n\n if (buttonKey != null && buttonHints[buttonKey] != null) {\n return buttonHints[buttonKey];\n }\n\n if (buttonHints[viewDef.type] != null) {\n return buttonHints[viewDef.type];\n }\n\n if (buttonHints[singleUnit] != null) {\n return buttonHints[singleUnit];\n }\n\n return null;\n };\n\n return {\n type: viewDef.type,\n component: viewDef.component,\n duration: duration,\n durationUnit: durationUnit,\n singleUnit: singleUnit,\n optionDefaults: viewDef.defaults,\n optionOverrides: __assign(__assign({}, singleUnitOverrides), viewDef.overrides),\n buttonTextOverride: queryButtonText(dynamicOptionOverrides) || queryButtonText(optionOverrides) || // constructor-specified buttonText lookup hash takes precedence\n viewDef.overrides.buttonText,\n buttonTextDefault: queryButtonText(localeDefaults) || viewDef.defaults.buttonText || queryButtonText(BASE_OPTION_DEFAULTS) || viewDef.type,\n // not DRY\n buttonTitleOverride: queryButtonTitle(dynamicOptionOverrides) || queryButtonTitle(optionOverrides) || viewDef.overrides.buttonHint,\n buttonTitleDefault: queryButtonTitle(localeDefaults) || viewDef.defaults.buttonHint || queryButtonTitle(BASE_OPTION_DEFAULTS) // will eventually fall back to buttonText\n\n };\n} // hack to get memoization working\n\n\nvar durationInputMap = {};\n\nfunction createDurationCached(durationInput) {\n var json = JSON.stringify(durationInput);\n var res = durationInputMap[json];\n\n if (res === undefined) {\n res = createDuration(durationInput);\n durationInputMap[json] = res;\n }\n\n return res;\n}\n\nvar DateProfileGenerator =\n/** @class */\nfunction () {\n function DateProfileGenerator(props) {\n this.props = props;\n this.nowDate = getNow(props.nowInput, props.dateEnv);\n this.initHiddenDays();\n }\n /* Date Range Computation\n ------------------------------------------------------------------------------------------------------------------*/\n // Builds a structure with info about what the dates/ranges will be for the \"prev\" view.\n\n\n DateProfileGenerator.prototype.buildPrev = function (currentDateProfile, currentDate, forceToValid) {\n var dateEnv = this.props.dateEnv;\n var prevDate = dateEnv.subtract(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month\n currentDateProfile.dateIncrement);\n return this.build(prevDate, -1, forceToValid);\n }; // Builds a structure with info about what the dates/ranges will be for the \"next\" view.\n\n\n DateProfileGenerator.prototype.buildNext = function (currentDateProfile, currentDate, forceToValid) {\n var dateEnv = this.props.dateEnv;\n var nextDate = dateEnv.add(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month\n currentDateProfile.dateIncrement);\n return this.build(nextDate, 1, forceToValid);\n }; // Builds a structure holding dates/ranges for rendering around the given date.\n // Optional direction param indicates whether the date is being incremented/decremented\n // from its previous value. decremented = -1, incremented = 1 (default).\n\n\n DateProfileGenerator.prototype.build = function (currentDate, direction, forceToValid) {\n if (forceToValid === void 0) {\n forceToValid = true;\n }\n\n var props = this.props;\n var validRange;\n var currentInfo;\n var isRangeAllDay;\n var renderRange;\n var activeRange;\n var isValid;\n validRange = this.buildValidRange();\n validRange = this.trimHiddenDays(validRange);\n\n if (forceToValid) {\n currentDate = constrainMarkerToRange(currentDate, validRange);\n }\n\n currentInfo = this.buildCurrentRangeInfo(currentDate, direction);\n isRangeAllDay = /^(year|month|week|day)$/.test(currentInfo.unit);\n renderRange = this.buildRenderRange(this.trimHiddenDays(currentInfo.range), currentInfo.unit, isRangeAllDay);\n renderRange = this.trimHiddenDays(renderRange);\n activeRange = renderRange;\n\n if (!props.showNonCurrentDates) {\n activeRange = intersectRanges(activeRange, currentInfo.range);\n }\n\n activeRange = this.adjustActiveRange(activeRange);\n activeRange = intersectRanges(activeRange, validRange); // might return null\n // it's invalid if the originally requested date is not contained,\n // or if the range is completely outside of the valid range.\n\n isValid = rangesIntersect(currentInfo.range, validRange);\n return {\n // constraint for where prev/next operations can go and where events can be dragged/resized to.\n // an object with optional start and end properties.\n validRange: validRange,\n // range the view is formally responsible for.\n // for example, a month view might have 1st-31st, excluding padded dates\n currentRange: currentInfo.range,\n // name of largest unit being displayed, like \"month\" or \"week\"\n currentRangeUnit: currentInfo.unit,\n isRangeAllDay: isRangeAllDay,\n // dates that display events and accept drag-n-drop\n // will be `null` if no dates accept events\n activeRange: activeRange,\n // date range with a rendered skeleton\n // includes not-active days that need some sort of DOM\n renderRange: renderRange,\n // Duration object that denotes the first visible time of any given day\n slotMinTime: props.slotMinTime,\n // Duration object that denotes the exclusive visible end time of any given day\n slotMaxTime: props.slotMaxTime,\n isValid: isValid,\n // how far the current date will move for a prev/next operation\n dateIncrement: this.buildDateIncrement(currentInfo.duration) // pass a fallback (might be null) ^\n\n };\n }; // Builds an object with optional start/end properties.\n // Indicates the minimum/maximum dates to display.\n // not responsible for trimming hidden days.\n\n\n DateProfileGenerator.prototype.buildValidRange = function () {\n var input = this.props.validRangeInput;\n var simpleInput = typeof input === 'function' ? input.call(this.props.calendarApi, this.nowDate) : input;\n return this.refineRange(simpleInput) || {\n start: null,\n end: null\n }; // completely open-ended\n }; // Builds a structure with info about the \"current\" range, the range that is\n // highlighted as being the current month for example.\n // See build() for a description of `direction`.\n // Guaranteed to have `range` and `unit` properties. `duration` is optional.\n\n\n DateProfileGenerator.prototype.buildCurrentRangeInfo = function (date, direction) {\n var props = this.props;\n var duration = null;\n var unit = null;\n var range = null;\n var dayCount;\n\n if (props.duration) {\n duration = props.duration;\n unit = props.durationUnit;\n range = this.buildRangeFromDuration(date, direction, duration, unit);\n } else if (dayCount = this.props.dayCount) {\n unit = 'day';\n range = this.buildRangeFromDayCount(date, direction, dayCount);\n } else if (range = this.buildCustomVisibleRange(date)) {\n unit = props.dateEnv.greatestWholeUnit(range.start, range.end).unit;\n } else {\n duration = this.getFallbackDuration();\n unit = greatestDurationDenominator(duration).unit;\n range = this.buildRangeFromDuration(date, direction, duration, unit);\n }\n\n return {\n duration: duration,\n unit: unit,\n range: range\n };\n };\n\n DateProfileGenerator.prototype.getFallbackDuration = function () {\n return createDuration({\n day: 1\n });\n }; // Returns a new activeRange to have time values (un-ambiguate)\n // slotMinTime or slotMaxTime causes the range to expand.\n\n\n DateProfileGenerator.prototype.adjustActiveRange = function (range) {\n var _a = this.props,\n dateEnv = _a.dateEnv,\n usesMinMaxTime = _a.usesMinMaxTime,\n slotMinTime = _a.slotMinTime,\n slotMaxTime = _a.slotMaxTime;\n var start = range.start,\n end = range.end;\n\n if (usesMinMaxTime) {\n // expand active range if slotMinTime is negative (why not when positive?)\n if (asRoughDays(slotMinTime) < 0) {\n start = startOfDay(start); // necessary?\n\n start = dateEnv.add(start, slotMinTime);\n } // expand active range if slotMaxTime is beyond one day (why not when negative?)\n\n\n if (asRoughDays(slotMaxTime) > 1) {\n end = startOfDay(end); // necessary?\n\n end = addDays(end, -1);\n end = dateEnv.add(end, slotMaxTime);\n }\n }\n\n return {\n start: start,\n end: end\n };\n }; // Builds the \"current\" range when it is specified as an explicit duration.\n // `unit` is the already-computed greatestDurationDenominator unit of duration.\n\n\n DateProfileGenerator.prototype.buildRangeFromDuration = function (date, direction, duration, unit) {\n var _a = this.props,\n dateEnv = _a.dateEnv,\n dateAlignment = _a.dateAlignment;\n var start;\n var end;\n var res; // compute what the alignment should be\n\n if (!dateAlignment) {\n var dateIncrement = this.props.dateIncrement;\n\n if (dateIncrement) {\n // use the smaller of the two units\n if (asRoughMs(dateIncrement) < asRoughMs(duration)) {\n dateAlignment = greatestDurationDenominator(dateIncrement).unit;\n } else {\n dateAlignment = unit;\n }\n } else {\n dateAlignment = unit;\n }\n } // if the view displays a single day or smaller\n\n\n if (asRoughDays(duration) <= 1) {\n if (this.isHiddenDay(start)) {\n start = this.skipHiddenDays(start, direction);\n start = startOfDay(start);\n }\n }\n\n function computeRes() {\n start = dateEnv.startOf(date, dateAlignment);\n end = dateEnv.add(start, duration);\n res = {\n start: start,\n end: end\n };\n }\n\n computeRes(); // if range is completely enveloped by hidden days, go past the hidden days\n\n if (!this.trimHiddenDays(res)) {\n date = this.skipHiddenDays(date, direction);\n computeRes();\n }\n\n return res;\n }; // Builds the \"current\" range when a dayCount is specified.\n\n\n DateProfileGenerator.prototype.buildRangeFromDayCount = function (date, direction, dayCount) {\n var _a = this.props,\n dateEnv = _a.dateEnv,\n dateAlignment = _a.dateAlignment;\n var runningCount = 0;\n var start = date;\n var end;\n\n if (dateAlignment) {\n start = dateEnv.startOf(start, dateAlignment);\n }\n\n start = startOfDay(start);\n start = this.skipHiddenDays(start, direction);\n end = start;\n\n do {\n end = addDays(end, 1);\n\n if (!this.isHiddenDay(end)) {\n runningCount += 1;\n }\n } while (runningCount < dayCount);\n\n return {\n start: start,\n end: end\n };\n }; // Builds a normalized range object for the \"visible\" range,\n // which is a way to define the currentRange and activeRange at the same time.\n\n\n DateProfileGenerator.prototype.buildCustomVisibleRange = function (date) {\n var props = this.props;\n var input = props.visibleRangeInput;\n var simpleInput = typeof input === 'function' ? input.call(props.calendarApi, props.dateEnv.toDate(date)) : input;\n var range = this.refineRange(simpleInput);\n\n if (range && (range.start == null || range.end == null)) {\n return null;\n }\n\n return range;\n }; // Computes the range that will represent the element/cells for *rendering*,\n // but which may have voided days/times.\n // not responsible for trimming hidden days.\n\n\n DateProfileGenerator.prototype.buildRenderRange = function (currentRange, currentRangeUnit, isRangeAllDay) {\n return currentRange;\n }; // Compute the duration value that should be added/substracted to the current date\n // when a prev/next operation happens.\n\n\n DateProfileGenerator.prototype.buildDateIncrement = function (fallback) {\n var dateIncrement = this.props.dateIncrement;\n var customAlignment;\n\n if (dateIncrement) {\n return dateIncrement;\n }\n\n if (customAlignment = this.props.dateAlignment) {\n return createDuration(1, customAlignment);\n }\n\n if (fallback) {\n return fallback;\n }\n\n return createDuration({\n days: 1\n });\n };\n\n DateProfileGenerator.prototype.refineRange = function (rangeInput) {\n if (rangeInput) {\n var range = parseRange(rangeInput, this.props.dateEnv);\n\n if (range) {\n range = computeVisibleDayRange(range);\n }\n\n return range;\n }\n\n return null;\n };\n /* Hidden Days\n ------------------------------------------------------------------------------------------------------------------*/\n // Initializes internal variables related to calculating hidden days-of-week\n\n\n DateProfileGenerator.prototype.initHiddenDays = function () {\n var hiddenDays = this.props.hiddenDays || []; // array of day-of-week indices that are hidden\n\n var isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool)\n\n var dayCnt = 0;\n var i;\n\n if (this.props.weekends === false) {\n hiddenDays.push(0, 6); // 0=sunday, 6=saturday\n }\n\n for (i = 0; i < 7; i += 1) {\n if (!(isHiddenDayHash[i] = hiddenDays.indexOf(i) !== -1)) {\n dayCnt += 1;\n }\n }\n\n if (!dayCnt) {\n throw new Error('invalid hiddenDays'); // all days were hidden? bad.\n }\n\n this.isHiddenDayHash = isHiddenDayHash;\n }; // Remove days from the beginning and end of the range that are computed as hidden.\n // If the whole range is trimmed off, returns null\n\n\n DateProfileGenerator.prototype.trimHiddenDays = function (range) {\n var start = range.start,\n end = range.end;\n\n if (start) {\n start = this.skipHiddenDays(start);\n }\n\n if (end) {\n end = this.skipHiddenDays(end, -1, true);\n }\n\n if (start == null || end == null || start < end) {\n return {\n start: start,\n end: end\n };\n }\n\n return null;\n }; // Is the current day hidden?\n // `day` is a day-of-week index (0-6), or a Date (used for UTC)\n\n\n DateProfileGenerator.prototype.isHiddenDay = function (day) {\n if (day instanceof Date) {\n day = day.getUTCDay();\n }\n\n return this.isHiddenDayHash[day];\n }; // Incrementing the current day until it is no longer a hidden day, returning a copy.\n // DOES NOT CONSIDER validRange!\n // If the initial value of `date` is not a hidden day, don't do anything.\n // Pass `isExclusive` as `true` if you are dealing with an end date.\n // `inc` defaults to `1` (increment one day forward each time)\n\n\n DateProfileGenerator.prototype.skipHiddenDays = function (date, inc, isExclusive) {\n if (inc === void 0) {\n inc = 1;\n }\n\n if (isExclusive === void 0) {\n isExclusive = false;\n }\n\n while (this.isHiddenDayHash[(date.getUTCDay() + (isExclusive ? inc : 0) + 7) % 7]) {\n date = addDays(date, inc);\n }\n\n return date;\n };\n\n return DateProfileGenerator;\n}();\n\nfunction reduceViewType(viewType, action) {\n switch (action.type) {\n case 'CHANGE_VIEW_TYPE':\n viewType = action.viewType;\n }\n\n return viewType;\n}\n\nfunction reduceDynamicOptionOverrides(dynamicOptionOverrides, action) {\n var _a;\n\n switch (action.type) {\n case 'SET_OPTION':\n return __assign(__assign({}, dynamicOptionOverrides), (_a = {}, _a[action.optionName] = action.rawOptionValue, _a));\n\n default:\n return dynamicOptionOverrides;\n }\n}\n\nfunction reduceDateProfile(currentDateProfile, action, currentDate, dateProfileGenerator) {\n var dp;\n\n switch (action.type) {\n case 'CHANGE_VIEW_TYPE':\n return dateProfileGenerator.build(action.dateMarker || currentDate);\n\n case 'CHANGE_DATE':\n return dateProfileGenerator.build(action.dateMarker);\n\n case 'PREV':\n dp = dateProfileGenerator.buildPrev(currentDateProfile, currentDate);\n\n if (dp.isValid) {\n return dp;\n }\n\n break;\n\n case 'NEXT':\n dp = dateProfileGenerator.buildNext(currentDateProfile, currentDate);\n\n if (dp.isValid) {\n return dp;\n }\n\n break;\n }\n\n return currentDateProfile;\n}\n\nfunction initEventSources(calendarOptions, dateProfile, context) {\n var activeRange = dateProfile ? dateProfile.activeRange : null;\n return addSources({}, parseInitialSources(calendarOptions, context), activeRange, context);\n}\n\nfunction reduceEventSources(eventSources, action, dateProfile, context) {\n var activeRange = dateProfile ? dateProfile.activeRange : null; // need this check?\n\n switch (action.type) {\n case 'ADD_EVENT_SOURCES':\n // already parsed\n return addSources(eventSources, action.sources, activeRange, context);\n\n case 'REMOVE_EVENT_SOURCE':\n return removeSource(eventSources, action.sourceId);\n\n case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n\n case 'NEXT':\n case 'CHANGE_DATE':\n case 'CHANGE_VIEW_TYPE':\n if (dateProfile) {\n return fetchDirtySources(eventSources, activeRange, context);\n }\n\n return eventSources;\n\n case 'FETCH_EVENT_SOURCES':\n return fetchSourcesByIds(eventSources, action.sourceIds ? // why no type?\n arrayToHash(action.sourceIds) : excludeStaticSources(eventSources, context), activeRange, action.isRefetch || false, context);\n\n case 'RECEIVE_EVENTS':\n case 'RECEIVE_EVENT_ERROR':\n return receiveResponse(eventSources, action.sourceId, action.fetchId, action.fetchRange);\n\n case 'REMOVE_ALL_EVENT_SOURCES':\n return {};\n\n default:\n return eventSources;\n }\n}\n\nfunction reduceEventSourcesNewTimeZone(eventSources, dateProfile, context) {\n var activeRange = dateProfile ? dateProfile.activeRange : null; // need this check?\n\n return fetchSourcesByIds(eventSources, excludeStaticSources(eventSources, context), activeRange, true, context);\n}\n\nfunction computeEventSourcesLoading(eventSources) {\n for (var sourceId in eventSources) {\n if (eventSources[sourceId].isFetching) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction addSources(eventSourceHash, sources, fetchRange, context) {\n var hash = {};\n\n for (var _i = 0, sources_1 = sources; _i < sources_1.length; _i++) {\n var source = sources_1[_i];\n hash[source.sourceId] = source;\n }\n\n if (fetchRange) {\n hash = fetchDirtySources(hash, fetchRange, context);\n }\n\n return __assign(__assign({}, eventSourceHash), hash);\n}\n\nfunction removeSource(eventSourceHash, sourceId) {\n return filterHash(eventSourceHash, function (eventSource) {\n return eventSource.sourceId !== sourceId;\n });\n}\n\nfunction fetchDirtySources(sourceHash, fetchRange, context) {\n return fetchSourcesByIds(sourceHash, filterHash(sourceHash, function (eventSource) {\n return isSourceDirty(eventSource, fetchRange, context);\n }), fetchRange, false, context);\n}\n\nfunction isSourceDirty(eventSource, fetchRange, context) {\n if (!doesSourceNeedRange(eventSource, context)) {\n return !eventSource.latestFetchId;\n }\n\n return !context.options.lazyFetching || !eventSource.fetchRange || eventSource.isFetching || // always cancel outdated in-progress fetches\n fetchRange.start < eventSource.fetchRange.start || fetchRange.end > eventSource.fetchRange.end;\n}\n\nfunction fetchSourcesByIds(prevSources, sourceIdHash, fetchRange, isRefetch, context) {\n var nextSources = {};\n\n for (var sourceId in prevSources) {\n var source = prevSources[sourceId];\n\n if (sourceIdHash[sourceId]) {\n nextSources[sourceId] = fetchSource(source, fetchRange, isRefetch, context);\n } else {\n nextSources[sourceId] = source;\n }\n }\n\n return nextSources;\n}\n\nfunction fetchSource(eventSource, fetchRange, isRefetch, context) {\n var options = context.options,\n calendarApi = context.calendarApi;\n var sourceDef = context.pluginHooks.eventSourceDefs[eventSource.sourceDefId];\n var fetchId = guid();\n sourceDef.fetch({\n eventSource: eventSource,\n range: fetchRange,\n isRefetch: isRefetch,\n context: context\n }, function (res) {\n var rawEvents = res.rawEvents;\n\n if (options.eventSourceSuccess) {\n rawEvents = options.eventSourceSuccess.call(calendarApi, rawEvents, res.xhr) || rawEvents;\n }\n\n if (eventSource.success) {\n rawEvents = eventSource.success.call(calendarApi, rawEvents, res.xhr) || rawEvents;\n }\n\n context.dispatch({\n type: 'RECEIVE_EVENTS',\n sourceId: eventSource.sourceId,\n fetchId: fetchId,\n fetchRange: fetchRange,\n rawEvents: rawEvents\n });\n }, function (error) {\n console.warn(error.message, error);\n\n if (options.eventSourceFailure) {\n options.eventSourceFailure.call(calendarApi, error);\n }\n\n if (eventSource.failure) {\n eventSource.failure(error);\n }\n\n context.dispatch({\n type: 'RECEIVE_EVENT_ERROR',\n sourceId: eventSource.sourceId,\n fetchId: fetchId,\n fetchRange: fetchRange,\n error: error\n });\n });\n return __assign(__assign({}, eventSource), {\n isFetching: true,\n latestFetchId: fetchId\n });\n}\n\nfunction receiveResponse(sourceHash, sourceId, fetchId, fetchRange) {\n var _a;\n\n var eventSource = sourceHash[sourceId];\n\n if (eventSource && // not already removed\n fetchId === eventSource.latestFetchId) {\n return __assign(__assign({}, sourceHash), (_a = {}, _a[sourceId] = __assign(__assign({}, eventSource), {\n isFetching: false,\n fetchRange: fetchRange\n }), _a));\n }\n\n return sourceHash;\n}\n\nfunction excludeStaticSources(eventSources, context) {\n return filterHash(eventSources, function (eventSource) {\n return doesSourceNeedRange(eventSource, context);\n });\n}\n\nfunction parseInitialSources(rawOptions, context) {\n var refiners = buildEventSourceRefiners(context);\n var rawSources = [].concat(rawOptions.eventSources || []);\n var sources = []; // parsed\n\n if (rawOptions.initialEvents) {\n rawSources.unshift(rawOptions.initialEvents);\n }\n\n if (rawOptions.events) {\n rawSources.unshift(rawOptions.events);\n }\n\n for (var _i = 0, rawSources_1 = rawSources; _i < rawSources_1.length; _i++) {\n var rawSource = rawSources_1[_i];\n var source = parseEventSource(rawSource, context, refiners);\n\n if (source) {\n sources.push(source);\n }\n }\n\n return sources;\n}\n\nfunction doesSourceNeedRange(eventSource, context) {\n var defs = context.pluginHooks.eventSourceDefs;\n return !defs[eventSource.sourceDefId].ignoreRange;\n}\n\nfunction reduceEventStore(eventStore, action, eventSources, dateProfile, context) {\n switch (action.type) {\n case 'RECEIVE_EVENTS':\n // raw\n return receiveRawEvents(eventStore, eventSources[action.sourceId], action.fetchId, action.fetchRange, action.rawEvents, context);\n\n case 'ADD_EVENTS':\n // already parsed, but not expanded\n return addEvent(eventStore, action.eventStore, // new ones\n dateProfile ? dateProfile.activeRange : null, context);\n\n case 'RESET_EVENTS':\n return action.eventStore;\n\n case 'MERGE_EVENTS':\n // already parsed and expanded\n return mergeEventStores(eventStore, action.eventStore);\n\n case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n\n case 'NEXT':\n case 'CHANGE_DATE':\n case 'CHANGE_VIEW_TYPE':\n if (dateProfile) {\n return expandRecurring(eventStore, dateProfile.activeRange, context);\n }\n\n return eventStore;\n\n case 'REMOVE_EVENTS':\n return excludeSubEventStore(eventStore, action.eventStore);\n\n case 'REMOVE_EVENT_SOURCE':\n return excludeEventsBySourceId(eventStore, action.sourceId);\n\n case 'REMOVE_ALL_EVENT_SOURCES':\n return filterEventStoreDefs(eventStore, function (eventDef) {\n return !eventDef.sourceId // only keep events with no source id\n ;\n });\n\n case 'REMOVE_ALL_EVENTS':\n return createEmptyEventStore();\n\n default:\n return eventStore;\n }\n}\n\nfunction receiveRawEvents(eventStore, eventSource, fetchId, fetchRange, rawEvents, context) {\n if (eventSource && // not already removed\n fetchId === eventSource.latestFetchId // TODO: wish this logic was always in event-sources\n ) {\n var subset = parseEvents(transformRawEvents(rawEvents, eventSource, context), eventSource, context);\n\n if (fetchRange) {\n subset = expandRecurring(subset, fetchRange, context);\n }\n\n return mergeEventStores(excludeEventsBySourceId(eventStore, eventSource.sourceId), subset);\n }\n\n return eventStore;\n}\n\nfunction transformRawEvents(rawEvents, eventSource, context) {\n var calEachTransform = context.options.eventDataTransform;\n var sourceEachTransform = eventSource ? eventSource.eventDataTransform : null;\n\n if (sourceEachTransform) {\n rawEvents = transformEachRawEvent(rawEvents, sourceEachTransform);\n }\n\n if (calEachTransform) {\n rawEvents = transformEachRawEvent(rawEvents, calEachTransform);\n }\n\n return rawEvents;\n}\n\nfunction transformEachRawEvent(rawEvents, func) {\n var refinedEvents;\n\n if (!func) {\n refinedEvents = rawEvents;\n } else {\n refinedEvents = [];\n\n for (var _i = 0, rawEvents_1 = rawEvents; _i < rawEvents_1.length; _i++) {\n var rawEvent = rawEvents_1[_i];\n var refinedEvent = func(rawEvent);\n\n if (refinedEvent) {\n refinedEvents.push(refinedEvent);\n } else if (refinedEvent == null) {\n refinedEvents.push(rawEvent);\n } // if a different falsy value, do nothing\n\n }\n }\n\n return refinedEvents;\n}\n\nfunction addEvent(eventStore, subset, expandRange, context) {\n if (expandRange) {\n subset = expandRecurring(subset, expandRange, context);\n }\n\n return mergeEventStores(eventStore, subset);\n}\n\nfunction rezoneEventStoreDates(eventStore, oldDateEnv, newDateEnv) {\n var defs = eventStore.defs;\n var instances = mapHash(eventStore.instances, function (instance) {\n var def = defs[instance.defId];\n\n if (def.allDay || def.recurringDef) {\n return instance; // isn't dependent on timezone\n }\n\n return __assign(__assign({}, instance), {\n range: {\n start: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.start, instance.forcedStartTzo)),\n end: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.end, instance.forcedEndTzo))\n },\n forcedStartTzo: newDateEnv.canComputeOffset ? null : instance.forcedStartTzo,\n forcedEndTzo: newDateEnv.canComputeOffset ? null : instance.forcedEndTzo\n });\n });\n return {\n defs: defs,\n instances: instances\n };\n}\n\nfunction excludeEventsBySourceId(eventStore, sourceId) {\n return filterEventStoreDefs(eventStore, function (eventDef) {\n return eventDef.sourceId !== sourceId;\n });\n} // QUESTION: why not just return instances? do a general object-property-exclusion util\n\n\nfunction excludeInstances(eventStore, removals) {\n return {\n defs: eventStore.defs,\n instances: filterHash(eventStore.instances, function (instance) {\n return !removals[instance.instanceId];\n })\n };\n}\n\nfunction reduceDateSelection(currentSelection, action) {\n switch (action.type) {\n case 'UNSELECT_DATES':\n return null;\n\n case 'SELECT_DATES':\n return action.selection;\n\n default:\n return currentSelection;\n }\n}\n\nfunction reduceSelectedEvent(currentInstanceId, action) {\n switch (action.type) {\n case 'UNSELECT_EVENT':\n return '';\n\n case 'SELECT_EVENT':\n return action.eventInstanceId;\n\n default:\n return currentInstanceId;\n }\n}\n\nfunction reduceEventDrag(currentDrag, action) {\n var newDrag;\n\n switch (action.type) {\n case 'UNSET_EVENT_DRAG':\n return null;\n\n case 'SET_EVENT_DRAG':\n newDrag = action.state;\n return {\n affectedEvents: newDrag.affectedEvents,\n mutatedEvents: newDrag.mutatedEvents,\n isEvent: newDrag.isEvent\n };\n\n default:\n return currentDrag;\n }\n}\n\nfunction reduceEventResize(currentResize, action) {\n var newResize;\n\n switch (action.type) {\n case 'UNSET_EVENT_RESIZE':\n return null;\n\n case 'SET_EVENT_RESIZE':\n newResize = action.state;\n return {\n affectedEvents: newResize.affectedEvents,\n mutatedEvents: newResize.mutatedEvents,\n isEvent: newResize.isEvent\n };\n\n default:\n return currentResize;\n }\n}\n\nfunction parseToolbars(calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) {\n var header = calendarOptions.headerToolbar ? parseToolbar(calendarOptions.headerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null;\n var footer = calendarOptions.footerToolbar ? parseToolbar(calendarOptions.footerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null;\n return {\n header: header,\n footer: footer\n };\n}\n\nfunction parseToolbar(sectionStrHash, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) {\n var sectionWidgets = {};\n var viewsWithButtons = [];\n var hasTitle = false;\n\n for (var sectionName in sectionStrHash) {\n var sectionStr = sectionStrHash[sectionName];\n var sectionRes = parseSection(sectionStr, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi);\n sectionWidgets[sectionName] = sectionRes.widgets;\n viewsWithButtons.push.apply(viewsWithButtons, sectionRes.viewsWithButtons);\n hasTitle = hasTitle || sectionRes.hasTitle;\n }\n\n return {\n sectionWidgets: sectionWidgets,\n viewsWithButtons: viewsWithButtons,\n hasTitle: hasTitle\n };\n}\n/*\nBAD: querying icons and text here. should be done at render time\n*/\n\n\nfunction parseSection(sectionStr, calendarOptions, // defaults+overrides, then refined\ncalendarOptionOverrides, // overrides only!, unrefined :(\ntheme, viewSpecs, calendarApi) {\n var isRtl = calendarOptions.direction === 'rtl';\n var calendarCustomButtons = calendarOptions.customButtons || {};\n var calendarButtonTextOverrides = calendarOptionOverrides.buttonText || {};\n var calendarButtonText = calendarOptions.buttonText || {};\n var calendarButtonHintOverrides = calendarOptionOverrides.buttonHints || {};\n var calendarButtonHints = calendarOptions.buttonHints || {};\n var sectionSubstrs = sectionStr ? sectionStr.split(' ') : [];\n var viewsWithButtons = [];\n var hasTitle = false;\n var widgets = sectionSubstrs.map(function (buttonGroupStr) {\n return buttonGroupStr.split(',').map(function (buttonName) {\n if (buttonName === 'title') {\n hasTitle = true;\n return {\n buttonName: buttonName\n };\n }\n\n var customButtonProps;\n var viewSpec;\n var buttonClick;\n var buttonIcon; // only one of these will be set\n\n var buttonText; // \"\n\n var buttonHint; // ^ for the title=\"\" attribute, for accessibility\n\n if (customButtonProps = calendarCustomButtons[buttonName]) {\n buttonClick = function buttonClick(ev) {\n if (customButtonProps.click) {\n customButtonProps.click.call(ev.target, ev, ev.target); // TODO: use Calendar this context?\n }\n };\n\n (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) || (buttonIcon = theme.getIconClass(buttonName, isRtl)) || (buttonText = customButtonProps.text);\n buttonHint = customButtonProps.hint || customButtonProps.text;\n } else if (viewSpec = viewSpecs[buttonName]) {\n viewsWithButtons.push(buttonName);\n\n buttonClick = function buttonClick() {\n calendarApi.changeView(buttonName);\n };\n\n (buttonText = viewSpec.buttonTextOverride) || (buttonIcon = theme.getIconClass(buttonName, isRtl)) || (buttonText = viewSpec.buttonTextDefault);\n var textFallback = viewSpec.buttonTextOverride || viewSpec.buttonTextDefault;\n buttonHint = formatWithOrdinals(viewSpec.buttonTitleOverride || viewSpec.buttonTitleDefault || calendarOptions.viewHint, [textFallback, buttonName], // view-name = buttonName\n textFallback);\n } else if (calendarApi[buttonName]) {\n // a calendarApi method\n buttonClick = function buttonClick() {\n calendarApi[buttonName]();\n };\n\n (buttonText = calendarButtonTextOverrides[buttonName]) || (buttonIcon = theme.getIconClass(buttonName, isRtl)) || (buttonText = calendarButtonText[buttonName]); // everything else is considered default\n\n if (buttonName === 'prevYear' || buttonName === 'nextYear') {\n var prevOrNext = buttonName === 'prevYear' ? 'prev' : 'next';\n buttonHint = formatWithOrdinals(calendarButtonHintOverrides[prevOrNext] || calendarButtonHints[prevOrNext], [calendarButtonText.year || 'year', 'year'], calendarButtonText[buttonName]);\n } else {\n buttonHint = function buttonHint(navUnit) {\n return formatWithOrdinals(calendarButtonHintOverrides[buttonName] || calendarButtonHints[buttonName], [calendarButtonText[navUnit] || navUnit, navUnit], calendarButtonText[buttonName]);\n };\n }\n }\n\n return {\n buttonName: buttonName,\n buttonClick: buttonClick,\n buttonIcon: buttonIcon,\n buttonText: buttonText,\n buttonHint: buttonHint\n };\n });\n });\n return {\n widgets: widgets,\n viewsWithButtons: viewsWithButtons,\n hasTitle: hasTitle\n };\n}\n\nvar eventSourceDef$2 = {\n ignoreRange: true,\n parseMeta: function parseMeta(refined) {\n if (Array.isArray(refined.events)) {\n return refined.events;\n }\n\n return null;\n },\n fetch: function fetch(arg, success) {\n success({\n rawEvents: arg.eventSource.meta\n });\n }\n};\nvar arrayEventSourcePlugin = createPlugin({\n eventSourceDefs: [eventSourceDef$2]\n});\nvar eventSourceDef$1 = {\n parseMeta: function parseMeta(refined) {\n if (typeof refined.events === 'function') {\n return refined.events;\n }\n\n return null;\n },\n fetch: function fetch(arg, success, failure) {\n var dateEnv = arg.context.dateEnv;\n var func = arg.eventSource.meta;\n unpromisify(func.bind(null, buildRangeApiWithTimeZone(arg.range, dateEnv)), function (rawEvents) {\n success({\n rawEvents: rawEvents\n }); // needs an object response\n }, failure);\n }\n};\nvar funcEventSourcePlugin = createPlugin({\n eventSourceDefs: [eventSourceDef$1]\n});\n\nfunction requestJson(method, url, params, successCallback, failureCallback) {\n method = method.toUpperCase();\n var body = null;\n\n if (method === 'GET') {\n url = injectQueryStringParams(url, params);\n } else {\n body = encodeParams(params);\n }\n\n var xhr = new XMLHttpRequest();\n xhr.open(method, url, true);\n\n if (method !== 'GET') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n }\n\n xhr.onload = function () {\n if (xhr.status >= 200 && xhr.status < 400) {\n var parsed = false;\n var res = void 0;\n\n try {\n res = JSON.parse(xhr.responseText);\n parsed = true;\n } catch (err) {// will handle parsed=false\n }\n\n if (parsed) {\n successCallback(res, xhr);\n } else {\n failureCallback('Failure parsing JSON', xhr);\n }\n } else {\n failureCallback('Request failed', xhr);\n }\n };\n\n xhr.onerror = function () {\n failureCallback('Request failed', xhr);\n };\n\n xhr.send(body);\n}\n\nfunction injectQueryStringParams(url, params) {\n return url + (url.indexOf('?') === -1 ? '?' : '&') + encodeParams(params);\n}\n\nfunction encodeParams(params) {\n var parts = [];\n\n for (var key in params) {\n parts.push(encodeURIComponent(key) + \"=\" + encodeURIComponent(params[key]));\n }\n\n return parts.join('&');\n}\n\nvar JSON_FEED_EVENT_SOURCE_REFINERS = {\n method: String,\n extraParams: identity,\n startParam: String,\n endParam: String,\n timeZoneParam: String\n};\nvar eventSourceDef = {\n parseMeta: function parseMeta(refined) {\n if (refined.url && (refined.format === 'json' || !refined.format)) {\n return {\n url: refined.url,\n format: 'json',\n method: (refined.method || 'GET').toUpperCase(),\n extraParams: refined.extraParams,\n startParam: refined.startParam,\n endParam: refined.endParam,\n timeZoneParam: refined.timeZoneParam\n };\n }\n\n return null;\n },\n fetch: function fetch(arg, success, failure) {\n var meta = arg.eventSource.meta;\n var requestParams = buildRequestParams(meta, arg.range, arg.context);\n requestJson(meta.method, meta.url, requestParams, function (rawEvents, xhr) {\n success({\n rawEvents: rawEvents,\n xhr: xhr\n });\n }, function (errorMessage, xhr) {\n failure({\n message: errorMessage,\n xhr: xhr\n });\n });\n }\n};\nvar jsonFeedEventSourcePlugin = createPlugin({\n eventSourceRefiners: JSON_FEED_EVENT_SOURCE_REFINERS,\n eventSourceDefs: [eventSourceDef]\n});\n\nfunction buildRequestParams(meta, range, context) {\n var dateEnv = context.dateEnv,\n options = context.options;\n var startParam;\n var endParam;\n var timeZoneParam;\n var customRequestParams;\n var params = {};\n startParam = meta.startParam;\n\n if (startParam == null) {\n startParam = options.startParam;\n }\n\n endParam = meta.endParam;\n\n if (endParam == null) {\n endParam = options.endParam;\n }\n\n timeZoneParam = meta.timeZoneParam;\n\n if (timeZoneParam == null) {\n timeZoneParam = options.timeZoneParam;\n } // retrieve any outbound GET/POST data from the options\n\n\n if (typeof meta.extraParams === 'function') {\n // supplied as a function that returns a key/value object\n customRequestParams = meta.extraParams();\n } else {\n // probably supplied as a straight key/value object\n customRequestParams = meta.extraParams || {};\n }\n\n __assign(params, customRequestParams);\n\n params[startParam] = dateEnv.formatIso(range.start);\n params[endParam] = dateEnv.formatIso(range.end);\n\n if (dateEnv.timeZone !== 'local') {\n params[timeZoneParam] = dateEnv.timeZone;\n }\n\n return params;\n}\n\nvar SIMPLE_RECURRING_REFINERS = {\n daysOfWeek: identity,\n startTime: createDuration,\n endTime: createDuration,\n duration: createDuration,\n startRecur: identity,\n endRecur: identity\n};\nvar recurring = {\n parse: function parse(refined, dateEnv) {\n if (refined.daysOfWeek || refined.startTime || refined.endTime || refined.startRecur || refined.endRecur) {\n var recurringData = {\n daysOfWeek: refined.daysOfWeek || null,\n startTime: refined.startTime || null,\n endTime: refined.endTime || null,\n startRecur: refined.startRecur ? dateEnv.createMarker(refined.startRecur) : null,\n endRecur: refined.endRecur ? dateEnv.createMarker(refined.endRecur) : null\n };\n var duration = void 0;\n\n if (refined.duration) {\n duration = refined.duration;\n }\n\n if (!duration && refined.startTime && refined.endTime) {\n duration = subtractDurations(refined.endTime, refined.startTime);\n }\n\n return {\n allDayGuess: Boolean(!refined.startTime && !refined.endTime),\n duration: duration,\n typeData: recurringData // doesn't need endTime anymore but oh well\n\n };\n }\n\n return null;\n },\n expand: function expand(typeData, framingRange, dateEnv) {\n var clippedFramingRange = intersectRanges(framingRange, {\n start: typeData.startRecur,\n end: typeData.endRecur\n });\n\n if (clippedFramingRange) {\n return expandRanges(typeData.daysOfWeek, typeData.startTime, clippedFramingRange, dateEnv);\n }\n\n return [];\n }\n};\nvar simpleRecurringEventsPlugin = createPlugin({\n recurringTypes: [recurring],\n eventRefiners: SIMPLE_RECURRING_REFINERS\n});\n\nfunction expandRanges(daysOfWeek, startTime, framingRange, dateEnv) {\n var dowHash = daysOfWeek ? arrayToHash(daysOfWeek) : null;\n var dayMarker = startOfDay(framingRange.start);\n var endMarker = framingRange.end;\n var instanceStarts = [];\n\n while (dayMarker < endMarker) {\n var instanceStart // if everyday, or this particular day-of-week\n = void 0; // if everyday, or this particular day-of-week\n\n if (!dowHash || dowHash[dayMarker.getUTCDay()]) {\n if (startTime) {\n instanceStart = dateEnv.add(dayMarker, startTime);\n } else {\n instanceStart = dayMarker;\n }\n\n instanceStarts.push(instanceStart);\n }\n\n dayMarker = addDays(dayMarker, 1);\n }\n\n return instanceStarts;\n}\n\nvar changeHandlerPlugin = createPlugin({\n optionChangeHandlers: {\n events: function events(_events, context) {\n handleEventSources([_events], context);\n },\n eventSources: handleEventSources\n }\n});\n/*\nBUG: if `event` was supplied, all previously-given `eventSources` will be wiped out\n*/\n\nfunction handleEventSources(inputs, context) {\n var unfoundSources = hashValuesToArray(context.getCurrentData().eventSources);\n var newInputs = [];\n\n for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) {\n var input = inputs_1[_i];\n var inputFound = false;\n\n for (var i = 0; i < unfoundSources.length; i += 1) {\n if (unfoundSources[i]._raw === input) {\n unfoundSources.splice(i, 1); // delete\n\n inputFound = true;\n break;\n }\n }\n\n if (!inputFound) {\n newInputs.push(input);\n }\n }\n\n for (var _a = 0, unfoundSources_1 = unfoundSources; _a < unfoundSources_1.length; _a++) {\n var unfoundSource = unfoundSources_1[_a];\n context.dispatch({\n type: 'REMOVE_EVENT_SOURCE',\n sourceId: unfoundSource.sourceId\n });\n }\n\n for (var _b = 0, newInputs_1 = newInputs; _b < newInputs_1.length; _b++) {\n var newInput = newInputs_1[_b];\n context.calendarApi.addEventSource(newInput);\n }\n}\n\nfunction handleDateProfile(dateProfile, context) {\n context.emitter.trigger('datesSet', __assign(__assign({}, buildRangeApiWithTimeZone(dateProfile.activeRange, context.dateEnv)), {\n view: context.viewApi\n }));\n}\n\nfunction handleEventStore(eventStore, context) {\n var emitter = context.emitter;\n\n if (emitter.hasHandlers('eventsSet')) {\n emitter.trigger('eventsSet', buildEventApis(eventStore, context));\n }\n}\n/*\nthis array is exposed on the root namespace so that UMD plugins can add to it.\nsee the rollup-bundles script.\n*/\n\n\nvar globalPlugins = [arrayEventSourcePlugin, funcEventSourcePlugin, jsonFeedEventSourcePlugin, simpleRecurringEventsPlugin, changeHandlerPlugin, createPlugin({\n isLoadingFuncs: [function (state) {\n return computeEventSourcesLoading(state.eventSources);\n }],\n contentTypeHandlers: {\n html: buildHtmlRenderer,\n domNodes: buildDomNodeRenderer\n },\n propSetHandlers: {\n dateProfile: handleDateProfile,\n eventStore: handleEventStore\n }\n})];\n\nfunction buildHtmlRenderer() {\n var currentEl = null;\n var currentHtml = '';\n\n function render(el, html) {\n if (el !== currentEl || html !== currentHtml) {\n el.innerHTML = html;\n }\n\n currentEl = el;\n currentHtml = html;\n }\n\n function destroy() {\n currentEl.innerHTML = '';\n currentEl = null;\n currentHtml = '';\n }\n\n return {\n render: render,\n destroy: destroy\n };\n}\n\nfunction buildDomNodeRenderer() {\n var currentEl = null;\n var currentDomNodes = [];\n\n function render(el, domNodes) {\n var newDomNodes = Array.prototype.slice.call(domNodes);\n\n if (el !== currentEl || !isArraysEqual(currentDomNodes, newDomNodes)) {\n // append first, remove second (for scroll resetting)\n for (var _i = 0, newDomNodes_1 = newDomNodes; _i < newDomNodes_1.length; _i++) {\n var newNode = newDomNodes_1[_i];\n el.appendChild(newNode);\n }\n\n destroy();\n }\n\n currentEl = el;\n currentDomNodes = newDomNodes;\n }\n\n function destroy() {\n currentDomNodes.forEach(removeElement);\n currentDomNodes = [];\n currentEl = null;\n }\n\n return {\n render: render,\n destroy: destroy\n };\n}\n\nvar DelayedRunner =\n/** @class */\nfunction () {\n function DelayedRunner(drainedOption) {\n this.drainedOption = drainedOption;\n this.isRunning = false;\n this.isDirty = false;\n this.pauseDepths = {};\n this.timeoutId = 0;\n }\n\n DelayedRunner.prototype.request = function (delay) {\n this.isDirty = true;\n\n if (!this.isPaused()) {\n this.clearTimeout();\n\n if (delay == null) {\n this.tryDrain();\n } else {\n this.timeoutId = setTimeout( // NOT OPTIMAL! TODO: look at debounce\n this.tryDrain.bind(this), delay);\n }\n }\n };\n\n DelayedRunner.prototype.pause = function (scope) {\n if (scope === void 0) {\n scope = '';\n }\n\n var pauseDepths = this.pauseDepths;\n pauseDepths[scope] = (pauseDepths[scope] || 0) + 1;\n this.clearTimeout();\n };\n\n DelayedRunner.prototype.resume = function (scope, force) {\n if (scope === void 0) {\n scope = '';\n }\n\n var pauseDepths = this.pauseDepths;\n\n if (scope in pauseDepths) {\n if (force) {\n delete pauseDepths[scope];\n } else {\n pauseDepths[scope] -= 1;\n var depth = pauseDepths[scope];\n\n if (depth <= 0) {\n delete pauseDepths[scope];\n }\n }\n\n this.tryDrain();\n }\n };\n\n DelayedRunner.prototype.isPaused = function () {\n return Object.keys(this.pauseDepths).length;\n };\n\n DelayedRunner.prototype.tryDrain = function () {\n if (!this.isRunning && !this.isPaused()) {\n this.isRunning = true;\n\n while (this.isDirty) {\n this.isDirty = false;\n this.drained(); // might set isDirty to true again\n }\n\n this.isRunning = false;\n }\n };\n\n DelayedRunner.prototype.clear = function () {\n this.clearTimeout();\n this.isDirty = false;\n this.pauseDepths = {};\n };\n\n DelayedRunner.prototype.clearTimeout = function () {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = 0;\n }\n };\n\n DelayedRunner.prototype.drained = function () {\n if (this.drainedOption) {\n this.drainedOption();\n }\n };\n\n return DelayedRunner;\n}();\n\nvar TaskRunner =\n/** @class */\nfunction () {\n function TaskRunner(runTaskOption, drainedOption) {\n this.runTaskOption = runTaskOption;\n this.drainedOption = drainedOption;\n this.queue = [];\n this.delayedRunner = new DelayedRunner(this.drain.bind(this));\n }\n\n TaskRunner.prototype.request = function (task, delay) {\n this.queue.push(task);\n this.delayedRunner.request(delay);\n };\n\n TaskRunner.prototype.pause = function (scope) {\n this.delayedRunner.pause(scope);\n };\n\n TaskRunner.prototype.resume = function (scope, force) {\n this.delayedRunner.resume(scope, force);\n };\n\n TaskRunner.prototype.drain = function () {\n var queue = this.queue;\n\n while (queue.length) {\n var completedTasks = [];\n var task = void 0;\n\n while (task = queue.shift()) {\n this.runTask(task);\n completedTasks.push(task);\n }\n\n this.drained(completedTasks);\n } // keep going, in case new tasks were added in the drained handler\n\n };\n\n TaskRunner.prototype.runTask = function (task) {\n if (this.runTaskOption) {\n this.runTaskOption(task);\n }\n };\n\n TaskRunner.prototype.drained = function (completedTasks) {\n if (this.drainedOption) {\n this.drainedOption(completedTasks);\n }\n };\n\n return TaskRunner;\n}(); // Computes what the title at the top of the calendarApi should be for this view\n\n\nfunction buildTitle(dateProfile, viewOptions, dateEnv) {\n var range; // for views that span a large unit of time, show the proper interval, ignoring stray days before and after\n\n if (/^(year|month)$/.test(dateProfile.currentRangeUnit)) {\n range = dateProfile.currentRange;\n } else {\n // for day units or smaller, use the actual day range\n range = dateProfile.activeRange;\n }\n\n return dateEnv.formatRange(range.start, range.end, createFormatter(viewOptions.titleFormat || buildTitleFormat(dateProfile)), {\n isEndExclusive: dateProfile.isRangeAllDay,\n defaultSeparator: viewOptions.titleRangeSeparator\n });\n} // Generates the format string that should be used to generate the title for the current date range.\n// Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`.\n\n\nfunction buildTitleFormat(dateProfile) {\n var currentRangeUnit = dateProfile.currentRangeUnit;\n\n if (currentRangeUnit === 'year') {\n return {\n year: 'numeric'\n };\n }\n\n if (currentRangeUnit === 'month') {\n return {\n year: 'numeric',\n month: 'long'\n }; // like \"September 2014\"\n }\n\n var days = diffWholeDays(dateProfile.currentRange.start, dateProfile.currentRange.end);\n\n if (days !== null && days > 1) {\n // multi-day range. shorter, like \"Sep 9 - 10 2014\"\n return {\n year: 'numeric',\n month: 'short',\n day: 'numeric'\n };\n } // one day. longer, like \"September 9 2014\"\n\n\n return {\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n };\n} // in future refactor, do the redux-style function(state=initial) for initial-state\n// also, whatever is happening in constructor, have it happen in action queue too\n\n\nvar CalendarDataManager =\n/** @class */\nfunction () {\n function CalendarDataManager(props) {\n var _this = this;\n\n this.computeOptionsData = memoize(this._computeOptionsData);\n this.computeCurrentViewData = memoize(this._computeCurrentViewData);\n this.organizeRawLocales = memoize(organizeRawLocales);\n this.buildLocale = memoize(buildLocale);\n this.buildPluginHooks = buildBuildPluginHooks();\n this.buildDateEnv = memoize(buildDateEnv);\n this.buildTheme = memoize(buildTheme);\n this.parseToolbars = memoize(parseToolbars);\n this.buildViewSpecs = memoize(buildViewSpecs);\n this.buildDateProfileGenerator = memoizeObjArg(buildDateProfileGenerator);\n this.buildViewApi = memoize(buildViewApi);\n this.buildViewUiProps = memoizeObjArg(buildViewUiProps);\n this.buildEventUiBySource = memoize(buildEventUiBySource, isPropsEqual);\n this.buildEventUiBases = memoize(buildEventUiBases);\n this.parseContextBusinessHours = memoizeObjArg(parseContextBusinessHours);\n this.buildTitle = memoize(buildTitle);\n this.emitter = new Emitter();\n this.actionRunner = new TaskRunner(this._handleAction.bind(this), this.updateData.bind(this));\n this.currentCalendarOptionsInput = {};\n this.currentCalendarOptionsRefined = {};\n this.currentViewOptionsInput = {};\n this.currentViewOptionsRefined = {};\n this.currentCalendarOptionsRefiners = {};\n\n this.getCurrentData = function () {\n return _this.data;\n };\n\n this.dispatch = function (action) {\n _this.actionRunner.request(action); // protects against recursive calls to _handleAction\n\n };\n\n this.props = props;\n this.actionRunner.pause();\n var dynamicOptionOverrides = {};\n var optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);\n var currentViewType = optionsData.calendarOptions.initialView || optionsData.pluginHooks.initialView;\n var currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides); // wire things up\n // TODO: not DRY\n\n props.calendarApi.currentDataManager = this;\n this.emitter.setThisContext(props.calendarApi);\n this.emitter.setOptions(currentViewData.options);\n var currentDate = getInitialDate(optionsData.calendarOptions, optionsData.dateEnv);\n var dateProfile = currentViewData.dateProfileGenerator.build(currentDate);\n\n if (!rangeContainsMarker(dateProfile.activeRange, currentDate)) {\n currentDate = dateProfile.currentRange.start;\n }\n\n var calendarContext = {\n dateEnv: optionsData.dateEnv,\n options: optionsData.calendarOptions,\n pluginHooks: optionsData.pluginHooks,\n calendarApi: props.calendarApi,\n dispatch: this.dispatch,\n emitter: this.emitter,\n getCurrentData: this.getCurrentData\n }; // needs to be after setThisContext\n\n for (var _i = 0, _a = optionsData.pluginHooks.contextInit; _i < _a.length; _i++) {\n var callback = _a[_i];\n callback(calendarContext);\n } // NOT DRY\n\n\n var eventSources = initEventSources(optionsData.calendarOptions, dateProfile, calendarContext);\n var initialState = {\n dynamicOptionOverrides: dynamicOptionOverrides,\n currentViewType: currentViewType,\n currentDate: currentDate,\n dateProfile: dateProfile,\n businessHours: this.parseContextBusinessHours(calendarContext),\n eventSources: eventSources,\n eventUiBases: {},\n eventStore: createEmptyEventStore(),\n renderableEventStore: createEmptyEventStore(),\n dateSelection: null,\n eventSelection: '',\n eventDrag: null,\n eventResize: null,\n selectionConfig: this.buildViewUiProps(calendarContext).selectionConfig\n };\n\n var contextAndState = __assign(__assign({}, calendarContext), initialState);\n\n for (var _b = 0, _c = optionsData.pluginHooks.reducers; _b < _c.length; _b++) {\n var reducer = _c[_b];\n\n __assign(initialState, reducer(null, null, contextAndState));\n }\n\n if (computeIsLoading(initialState, calendarContext)) {\n this.emitter.trigger('loading', true); // NOT DRY\n }\n\n this.state = initialState;\n this.updateData();\n this.actionRunner.resume();\n }\n\n CalendarDataManager.prototype.resetOptions = function (optionOverrides, append) {\n var props = this.props;\n props.optionOverrides = append ? __assign(__assign({}, props.optionOverrides), optionOverrides) : optionOverrides;\n this.actionRunner.request({\n type: 'NOTHING'\n });\n };\n\n CalendarDataManager.prototype._handleAction = function (action) {\n var _a = this,\n props = _a.props,\n state = _a.state,\n emitter = _a.emitter;\n\n var dynamicOptionOverrides = reduceDynamicOptionOverrides(state.dynamicOptionOverrides, action);\n var optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);\n var currentViewType = reduceViewType(state.currentViewType, action);\n var currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides); // wire things up\n // TODO: not DRY\n\n props.calendarApi.currentDataManager = this;\n emitter.setThisContext(props.calendarApi);\n emitter.setOptions(currentViewData.options);\n var calendarContext = {\n dateEnv: optionsData.dateEnv,\n options: optionsData.calendarOptions,\n pluginHooks: optionsData.pluginHooks,\n calendarApi: props.calendarApi,\n dispatch: this.dispatch,\n emitter: emitter,\n getCurrentData: this.getCurrentData\n };\n var currentDate = state.currentDate,\n dateProfile = state.dateProfile;\n\n if (this.data && this.data.dateProfileGenerator !== currentViewData.dateProfileGenerator) {\n // hack\n dateProfile = currentViewData.dateProfileGenerator.build(currentDate);\n }\n\n currentDate = reduceCurrentDate(currentDate, action);\n dateProfile = reduceDateProfile(dateProfile, action, currentDate, currentViewData.dateProfileGenerator);\n\n if (action.type === 'PREV' || // TODO: move this logic into DateProfileGenerator\n action.type === 'NEXT' || // \"\n !rangeContainsMarker(dateProfile.currentRange, currentDate)) {\n currentDate = dateProfile.currentRange.start;\n }\n\n var eventSources = reduceEventSources(state.eventSources, action, dateProfile, calendarContext);\n var eventStore = reduceEventStore(state.eventStore, action, eventSources, dateProfile, calendarContext);\n var isEventsLoading = computeEventSourcesLoading(eventSources); // BAD. also called in this func in computeIsLoading\n\n var renderableEventStore = isEventsLoading && !currentViewData.options.progressiveEventRendering ? state.renderableEventStore || eventStore : // try from previous state\n eventStore;\n\n var _b = this.buildViewUiProps(calendarContext),\n eventUiSingleBase = _b.eventUiSingleBase,\n selectionConfig = _b.selectionConfig; // will memoize obj\n\n\n var eventUiBySource = this.buildEventUiBySource(eventSources);\n var eventUiBases = this.buildEventUiBases(renderableEventStore.defs, eventUiSingleBase, eventUiBySource);\n var newState = {\n dynamicOptionOverrides: dynamicOptionOverrides,\n currentViewType: currentViewType,\n currentDate: currentDate,\n dateProfile: dateProfile,\n eventSources: eventSources,\n eventStore: eventStore,\n renderableEventStore: renderableEventStore,\n selectionConfig: selectionConfig,\n eventUiBases: eventUiBases,\n businessHours: this.parseContextBusinessHours(calendarContext),\n dateSelection: reduceDateSelection(state.dateSelection, action),\n eventSelection: reduceSelectedEvent(state.eventSelection, action),\n eventDrag: reduceEventDrag(state.eventDrag, action),\n eventResize: reduceEventResize(state.eventResize, action)\n };\n\n var contextAndState = __assign(__assign({}, calendarContext), newState);\n\n for (var _i = 0, _c = optionsData.pluginHooks.reducers; _i < _c.length; _i++) {\n var reducer = _c[_i];\n\n __assign(newState, reducer(state, action, contextAndState)); // give the OLD state, for old value\n\n }\n\n var wasLoading = computeIsLoading(state, calendarContext);\n var isLoading = computeIsLoading(newState, calendarContext); // TODO: use propSetHandlers in plugin system\n\n if (!wasLoading && isLoading) {\n emitter.trigger('loading', true);\n } else if (wasLoading && !isLoading) {\n emitter.trigger('loading', false);\n }\n\n this.state = newState;\n\n if (props.onAction) {\n props.onAction(action);\n }\n };\n\n CalendarDataManager.prototype.updateData = function () {\n var _a = this,\n props = _a.props,\n state = _a.state;\n\n var oldData = this.data;\n var optionsData = this.computeOptionsData(props.optionOverrides, state.dynamicOptionOverrides, props.calendarApi);\n var currentViewData = this.computeCurrentViewData(state.currentViewType, optionsData, props.optionOverrides, state.dynamicOptionOverrides);\n\n var data = this.data = __assign(__assign(__assign({\n viewTitle: this.buildTitle(state.dateProfile, currentViewData.options, optionsData.dateEnv),\n calendarApi: props.calendarApi,\n dispatch: this.dispatch,\n emitter: this.emitter,\n getCurrentData: this.getCurrentData\n }, optionsData), currentViewData), state);\n\n var changeHandlers = optionsData.pluginHooks.optionChangeHandlers;\n var oldCalendarOptions = oldData && oldData.calendarOptions;\n var newCalendarOptions = optionsData.calendarOptions;\n\n if (oldCalendarOptions && oldCalendarOptions !== newCalendarOptions) {\n if (oldCalendarOptions.timeZone !== newCalendarOptions.timeZone) {\n // hack\n state.eventSources = data.eventSources = reduceEventSourcesNewTimeZone(data.eventSources, state.dateProfile, data);\n state.eventStore = data.eventStore = rezoneEventStoreDates(data.eventStore, oldData.dateEnv, data.dateEnv);\n }\n\n for (var optionName in changeHandlers) {\n if (oldCalendarOptions[optionName] !== newCalendarOptions[optionName]) {\n changeHandlers[optionName](newCalendarOptions[optionName], data);\n }\n }\n }\n\n if (props.onData) {\n props.onData(data);\n }\n };\n\n CalendarDataManager.prototype._computeOptionsData = function (optionOverrides, dynamicOptionOverrides, calendarApi) {\n // TODO: blacklist options that are handled by optionChangeHandlers\n var _a = this.processRawCalendarOptions(optionOverrides, dynamicOptionOverrides),\n refinedOptions = _a.refinedOptions,\n pluginHooks = _a.pluginHooks,\n localeDefaults = _a.localeDefaults,\n availableLocaleData = _a.availableLocaleData,\n extra = _a.extra;\n\n warnUnknownOptions(extra);\n var dateEnv = this.buildDateEnv(refinedOptions.timeZone, refinedOptions.locale, refinedOptions.weekNumberCalculation, refinedOptions.firstDay, refinedOptions.weekText, pluginHooks, availableLocaleData, refinedOptions.defaultRangeSeparator);\n var viewSpecs = this.buildViewSpecs(pluginHooks.views, optionOverrides, dynamicOptionOverrides, localeDefaults);\n var theme = this.buildTheme(refinedOptions, pluginHooks);\n var toolbarConfig = this.parseToolbars(refinedOptions, optionOverrides, theme, viewSpecs, calendarApi);\n return {\n calendarOptions: refinedOptions,\n pluginHooks: pluginHooks,\n dateEnv: dateEnv,\n viewSpecs: viewSpecs,\n theme: theme,\n toolbarConfig: toolbarConfig,\n localeDefaults: localeDefaults,\n availableRawLocales: availableLocaleData.map\n };\n }; // always called from behind a memoizer\n\n\n CalendarDataManager.prototype.processRawCalendarOptions = function (optionOverrides, dynamicOptionOverrides) {\n var _a = mergeRawOptions([BASE_OPTION_DEFAULTS, optionOverrides, dynamicOptionOverrides]),\n locales = _a.locales,\n locale = _a.locale;\n\n var availableLocaleData = this.organizeRawLocales(locales);\n var availableRawLocales = availableLocaleData.map;\n var localeDefaults = this.buildLocale(locale || availableLocaleData.defaultCode, availableRawLocales).options;\n var pluginHooks = this.buildPluginHooks(optionOverrides.plugins || [], globalPlugins);\n\n var refiners = this.currentCalendarOptionsRefiners = __assign(__assign(__assign(__assign(__assign({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);\n\n var extra = {};\n var raw = mergeRawOptions([BASE_OPTION_DEFAULTS, localeDefaults, optionOverrides, dynamicOptionOverrides]);\n var refined = {};\n var currentRaw = this.currentCalendarOptionsInput;\n var currentRefined = this.currentCalendarOptionsRefined;\n var anyChanges = false;\n\n for (var optionName in raw) {\n if (optionName !== 'plugins') {\n // because plugins is special-cased\n if (raw[optionName] === currentRaw[optionName] || COMPLEX_OPTION_COMPARATORS[optionName] && optionName in currentRaw && COMPLEX_OPTION_COMPARATORS[optionName](currentRaw[optionName], raw[optionName])) {\n refined[optionName] = currentRefined[optionName];\n } else if (refiners[optionName]) {\n refined[optionName] = refiners[optionName](raw[optionName]);\n anyChanges = true;\n } else {\n extra[optionName] = currentRaw[optionName];\n }\n }\n }\n\n if (anyChanges) {\n this.currentCalendarOptionsInput = raw;\n this.currentCalendarOptionsRefined = refined;\n }\n\n return {\n rawOptions: this.currentCalendarOptionsInput,\n refinedOptions: this.currentCalendarOptionsRefined,\n pluginHooks: pluginHooks,\n availableLocaleData: availableLocaleData,\n localeDefaults: localeDefaults,\n extra: extra\n };\n };\n\n CalendarDataManager.prototype._computeCurrentViewData = function (viewType, optionsData, optionOverrides, dynamicOptionOverrides) {\n var viewSpec = optionsData.viewSpecs[viewType];\n\n if (!viewSpec) {\n throw new Error(\"viewType \\\"\" + viewType + \"\\\" is not available. Please make sure you've loaded all neccessary plugins\");\n }\n\n var _a = this.processRawViewOptions(viewSpec, optionsData.pluginHooks, optionsData.localeDefaults, optionOverrides, dynamicOptionOverrides),\n refinedOptions = _a.refinedOptions,\n extra = _a.extra;\n\n warnUnknownOptions(extra);\n var dateProfileGenerator = this.buildDateProfileGenerator({\n dateProfileGeneratorClass: viewSpec.optionDefaults.dateProfileGeneratorClass,\n duration: viewSpec.duration,\n durationUnit: viewSpec.durationUnit,\n usesMinMaxTime: viewSpec.optionDefaults.usesMinMaxTime,\n dateEnv: optionsData.dateEnv,\n calendarApi: this.props.calendarApi,\n slotMinTime: refinedOptions.slotMinTime,\n slotMaxTime: refinedOptions.slotMaxTime,\n showNonCurrentDates: refinedOptions.showNonCurrentDates,\n dayCount: refinedOptions.dayCount,\n dateAlignment: refinedOptions.dateAlignment,\n dateIncrement: refinedOptions.dateIncrement,\n hiddenDays: refinedOptions.hiddenDays,\n weekends: refinedOptions.weekends,\n nowInput: refinedOptions.now,\n validRangeInput: refinedOptions.validRange,\n visibleRangeInput: refinedOptions.visibleRange,\n monthMode: refinedOptions.monthMode,\n fixedWeekCount: refinedOptions.fixedWeekCount\n });\n var viewApi = this.buildViewApi(viewType, this.getCurrentData, optionsData.dateEnv);\n return {\n viewSpec: viewSpec,\n options: refinedOptions,\n dateProfileGenerator: dateProfileGenerator,\n viewApi: viewApi\n };\n };\n\n CalendarDataManager.prototype.processRawViewOptions = function (viewSpec, pluginHooks, localeDefaults, optionOverrides, dynamicOptionOverrides) {\n var raw = mergeRawOptions([BASE_OPTION_DEFAULTS, viewSpec.optionDefaults, localeDefaults, optionOverrides, viewSpec.optionOverrides, dynamicOptionOverrides]);\n\n var refiners = __assign(__assign(__assign(__assign(__assign(__assign({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), VIEW_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);\n\n var refined = {};\n var currentRaw = this.currentViewOptionsInput;\n var currentRefined = this.currentViewOptionsRefined;\n var anyChanges = false;\n var extra = {};\n\n for (var optionName in raw) {\n if (raw[optionName] === currentRaw[optionName]) {\n refined[optionName] = currentRefined[optionName];\n } else {\n if (raw[optionName] === this.currentCalendarOptionsInput[optionName]) {\n if (optionName in this.currentCalendarOptionsRefined) {\n // might be an \"extra\" prop\n refined[optionName] = this.currentCalendarOptionsRefined[optionName];\n }\n } else if (refiners[optionName]) {\n refined[optionName] = refiners[optionName](raw[optionName]);\n } else {\n extra[optionName] = raw[optionName];\n }\n\n anyChanges = true;\n }\n }\n\n if (anyChanges) {\n this.currentViewOptionsInput = raw;\n this.currentViewOptionsRefined = refined;\n }\n\n return {\n rawOptions: this.currentViewOptionsInput,\n refinedOptions: this.currentViewOptionsRefined,\n extra: extra\n };\n };\n\n return CalendarDataManager;\n}();\n\nfunction buildDateEnv(timeZone, explicitLocale, weekNumberCalculation, firstDay, weekText, pluginHooks, availableLocaleData, defaultSeparator) {\n var locale = buildLocale(explicitLocale || availableLocaleData.defaultCode, availableLocaleData.map);\n return new DateEnv({\n calendarSystem: 'gregory',\n timeZone: timeZone,\n namedTimeZoneImpl: pluginHooks.namedTimeZonedImpl,\n locale: locale,\n weekNumberCalculation: weekNumberCalculation,\n firstDay: firstDay,\n weekText: weekText,\n cmdFormatter: pluginHooks.cmdFormatter,\n defaultSeparator: defaultSeparator\n });\n}\n\nfunction buildTheme(options, pluginHooks) {\n var ThemeClass = pluginHooks.themeClasses[options.themeSystem] || StandardTheme;\n return new ThemeClass(options);\n}\n\nfunction buildDateProfileGenerator(props) {\n var DateProfileGeneratorClass = props.dateProfileGeneratorClass || DateProfileGenerator;\n return new DateProfileGeneratorClass(props);\n}\n\nfunction buildViewApi(type, getCurrentData, dateEnv) {\n return new ViewApi(type, getCurrentData, dateEnv);\n}\n\nfunction buildEventUiBySource(eventSources) {\n return mapHash(eventSources, function (eventSource) {\n return eventSource.ui;\n });\n}\n\nfunction buildEventUiBases(eventDefs, eventUiSingleBase, eventUiBySource) {\n var eventUiBases = {\n '': eventUiSingleBase\n };\n\n for (var defId in eventDefs) {\n var def = eventDefs[defId];\n\n if (def.sourceId && eventUiBySource[def.sourceId]) {\n eventUiBases[defId] = eventUiBySource[def.sourceId];\n }\n }\n\n return eventUiBases;\n}\n\nfunction buildViewUiProps(calendarContext) {\n var options = calendarContext.options;\n return {\n eventUiSingleBase: createEventUi({\n display: options.eventDisplay,\n editable: options.editable,\n startEditable: options.eventStartEditable,\n durationEditable: options.eventDurationEditable,\n constraint: options.eventConstraint,\n overlap: typeof options.eventOverlap === 'boolean' ? options.eventOverlap : undefined,\n allow: options.eventAllow,\n backgroundColor: options.eventBackgroundColor,\n borderColor: options.eventBorderColor,\n textColor: options.eventTextColor,\n color: options.eventColor // classNames: options.eventClassNames // render hook will handle this\n\n }, calendarContext),\n selectionConfig: createEventUi({\n constraint: options.selectConstraint,\n overlap: typeof options.selectOverlap === 'boolean' ? options.selectOverlap : undefined,\n allow: options.selectAllow\n }, calendarContext)\n };\n}\n\nfunction computeIsLoading(state, context) {\n for (var _i = 0, _a = context.pluginHooks.isLoadingFuncs; _i < _a.length; _i++) {\n var isLoadingFunc = _a[_i];\n\n if (isLoadingFunc(state)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction parseContextBusinessHours(calendarContext) {\n return parseBusinessHours(calendarContext.options.businessHours, calendarContext);\n}\n\nfunction warnUnknownOptions(options, viewName) {\n for (var optionName in options) {\n console.warn(\"Unknown option '\" + optionName + \"'\" + (viewName ? \" for view '\" + viewName + \"'\" : ''));\n }\n} // TODO: move this to react plugin?\n\n\nvar CalendarDataProvider =\n/** @class */\nfunction (_super) {\n __extends(CalendarDataProvider, _super);\n\n function CalendarDataProvider(props) {\n var _this = _super.call(this, props) || this;\n\n _this.handleData = function (data) {\n if (!_this.dataManager) {\n // still within initial run, before assignment in constructor\n // eslint-disable-next-line react/no-direct-mutation-state\n _this.state = data; // can't use setState yet\n } else {\n _this.setState(data);\n }\n };\n\n _this.dataManager = new CalendarDataManager({\n optionOverrides: props.optionOverrides,\n calendarApi: props.calendarApi,\n onData: _this.handleData\n });\n return _this;\n }\n\n CalendarDataProvider.prototype.render = function () {\n return this.props.children(this.state);\n };\n\n CalendarDataProvider.prototype.componentDidUpdate = function (prevProps) {\n var newOptionOverrides = this.props.optionOverrides;\n\n if (newOptionOverrides !== prevProps.optionOverrides) {\n // prevent recursive handleData\n this.dataManager.resetOptions(newOptionOverrides);\n }\n };\n\n return CalendarDataProvider;\n}(Component); // HELPERS\n\n/*\nif nextDayThreshold is specified, slicing is done in an all-day fashion.\nyou can get nextDayThreshold from context.nextDayThreshold\n*/\n\n\nfunction sliceEvents(props, allDay) {\n return sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold : null).fg;\n}\n\nvar NamedTimeZoneImpl =\n/** @class */\nfunction () {\n function NamedTimeZoneImpl(timeZoneName) {\n this.timeZoneName = timeZoneName;\n }\n\n return NamedTimeZoneImpl;\n}();\n\nvar SegHierarchy =\n/** @class */\nfunction () {\n function SegHierarchy() {\n // settings\n this.strictOrder = false;\n this.allowReslicing = false;\n this.maxCoord = -1; // -1 means no max\n\n this.maxStackCnt = -1; // -1 means no max\n\n this.levelCoords = []; // ordered\n\n this.entriesByLevel = []; // parallel with levelCoords\n\n this.stackCnts = {}; // TODO: use better technique!?\n }\n\n SegHierarchy.prototype.addSegs = function (inputs) {\n var hiddenEntries = [];\n\n for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) {\n var input = inputs_1[_i];\n this.insertEntry(input, hiddenEntries);\n }\n\n return hiddenEntries;\n };\n\n SegHierarchy.prototype.insertEntry = function (entry, hiddenEntries) {\n var insertion = this.findInsertion(entry);\n\n if (this.isInsertionValid(insertion, entry)) {\n this.insertEntryAt(entry, insertion);\n return 1;\n }\n\n return this.handleInvalidInsertion(insertion, entry, hiddenEntries);\n };\n\n SegHierarchy.prototype.isInsertionValid = function (insertion, entry) {\n return (this.maxCoord === -1 || insertion.levelCoord + entry.thickness <= this.maxCoord) && (this.maxStackCnt === -1 || insertion.stackCnt < this.maxStackCnt);\n }; // returns number of new entries inserted\n\n\n SegHierarchy.prototype.handleInvalidInsertion = function (insertion, entry, hiddenEntries) {\n if (this.allowReslicing && insertion.touchingEntry) {\n return this.splitEntry(entry, insertion.touchingEntry, hiddenEntries);\n }\n\n hiddenEntries.push(entry);\n return 0;\n };\n\n SegHierarchy.prototype.splitEntry = function (entry, barrier, hiddenEntries) {\n var partCnt = 0;\n var splitHiddenEntries = [];\n var entrySpan = entry.span;\n var barrierSpan = barrier.span;\n\n if (entrySpan.start < barrierSpan.start) {\n partCnt += this.insertEntry({\n index: entry.index,\n thickness: entry.thickness,\n span: {\n start: entrySpan.start,\n end: barrierSpan.start\n }\n }, splitHiddenEntries);\n }\n\n if (entrySpan.end > barrierSpan.end) {\n partCnt += this.insertEntry({\n index: entry.index,\n thickness: entry.thickness,\n span: {\n start: barrierSpan.end,\n end: entrySpan.end\n }\n }, splitHiddenEntries);\n }\n\n if (partCnt) {\n hiddenEntries.push.apply(hiddenEntries, __spreadArray([{\n index: entry.index,\n thickness: entry.thickness,\n span: intersectSpans(barrierSpan, entrySpan) // guaranteed to intersect\n\n }], splitHiddenEntries));\n return partCnt;\n }\n\n hiddenEntries.push(entry);\n return 0;\n };\n\n SegHierarchy.prototype.insertEntryAt = function (entry, insertion) {\n var _a = this,\n entriesByLevel = _a.entriesByLevel,\n levelCoords = _a.levelCoords;\n\n if (insertion.lateral === -1) {\n // create a new level\n insertAt(levelCoords, insertion.level, insertion.levelCoord);\n insertAt(entriesByLevel, insertion.level, [entry]);\n } else {\n // insert into existing level\n insertAt(entriesByLevel[insertion.level], insertion.lateral, entry);\n }\n\n this.stackCnts[buildEntryKey(entry)] = insertion.stackCnt;\n };\n\n SegHierarchy.prototype.findInsertion = function (newEntry) {\n var _a = this,\n levelCoords = _a.levelCoords,\n entriesByLevel = _a.entriesByLevel,\n strictOrder = _a.strictOrder,\n stackCnts = _a.stackCnts;\n\n var levelCnt = levelCoords.length;\n var candidateCoord = 0;\n var touchingLevel = -1;\n var touchingLateral = -1;\n var touchingEntry = null;\n var stackCnt = 0;\n\n for (var trackingLevel = 0; trackingLevel < levelCnt; trackingLevel += 1) {\n var trackingCoord = levelCoords[trackingLevel]; // if the current level is past the placed entry, we have found a good empty space and can stop.\n // if strictOrder, keep finding more lateral intersections.\n\n if (!strictOrder && trackingCoord >= candidateCoord + newEntry.thickness) {\n break;\n }\n\n var trackingEntries = entriesByLevel[trackingLevel];\n var trackingEntry = void 0;\n var searchRes = binarySearch(trackingEntries, newEntry.span.start, getEntrySpanEnd); // find first entry after newEntry's end\n\n var lateralIndex = searchRes[0] + searchRes[1]; // if exact match (which doesn't collide), go to next one\n\n while ( // loop through entries that horizontally intersect\n (trackingEntry = trackingEntries[lateralIndex]) && // but not past the whole entry list\n trackingEntry.span.start < newEntry.span.end // and not entirely past newEntry\n ) {\n var trackingEntryBottom = trackingCoord + trackingEntry.thickness; // intersects into the top of the candidate?\n\n if (trackingEntryBottom > candidateCoord) {\n candidateCoord = trackingEntryBottom;\n touchingEntry = trackingEntry;\n touchingLevel = trackingLevel;\n touchingLateral = lateralIndex;\n } // butts up against top of candidate? (will happen if just intersected as well)\n\n\n if (trackingEntryBottom === candidateCoord) {\n // accumulate the highest possible stackCnt of the trackingEntries that butt up\n stackCnt = Math.max(stackCnt, stackCnts[buildEntryKey(trackingEntry)] + 1);\n }\n\n lateralIndex += 1;\n }\n } // the destination level will be after touchingEntry's level. find it\n\n\n var destLevel = 0;\n\n if (touchingEntry) {\n destLevel = touchingLevel + 1;\n\n while (destLevel < levelCnt && levelCoords[destLevel] < candidateCoord) {\n destLevel += 1;\n }\n } // if adding to an existing level, find where to insert\n\n\n var destLateral = -1;\n\n if (destLevel < levelCnt && levelCoords[destLevel] === candidateCoord) {\n destLateral = binarySearch(entriesByLevel[destLevel], newEntry.span.end, getEntrySpanEnd)[0];\n }\n\n return {\n touchingLevel: touchingLevel,\n touchingLateral: touchingLateral,\n touchingEntry: touchingEntry,\n stackCnt: stackCnt,\n levelCoord: candidateCoord,\n level: destLevel,\n lateral: destLateral\n };\n }; // sorted by levelCoord (lowest to highest)\n\n\n SegHierarchy.prototype.toRects = function () {\n var _a = this,\n entriesByLevel = _a.entriesByLevel,\n levelCoords = _a.levelCoords;\n\n var levelCnt = entriesByLevel.length;\n var rects = [];\n\n for (var level = 0; level < levelCnt; level += 1) {\n var entries = entriesByLevel[level];\n var levelCoord = levelCoords[level];\n\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n rects.push(__assign(__assign({}, entry), {\n levelCoord: levelCoord\n }));\n }\n }\n\n return rects;\n };\n\n return SegHierarchy;\n}();\n\nfunction getEntrySpanEnd(entry) {\n return entry.span.end;\n}\n\nfunction buildEntryKey(entry) {\n return entry.index + ':' + entry.span.start;\n} // returns groups with entries sorted by input order\n\n\nfunction groupIntersectingEntries(entries) {\n var merges = [];\n\n for (var _i = 0, entries_2 = entries; _i < entries_2.length; _i++) {\n var entry = entries_2[_i];\n var filteredMerges = [];\n var hungryMerge = {\n span: entry.span,\n entries: [entry]\n };\n\n for (var _a = 0, merges_1 = merges; _a < merges_1.length; _a++) {\n var merge = merges_1[_a];\n\n if (intersectSpans(merge.span, hungryMerge.span)) {\n hungryMerge = {\n entries: merge.entries.concat(hungryMerge.entries),\n span: joinSpans(merge.span, hungryMerge.span)\n };\n } else {\n filteredMerges.push(merge);\n }\n }\n\n filteredMerges.push(hungryMerge);\n merges = filteredMerges;\n }\n\n return merges;\n}\n\nfunction joinSpans(span0, span1) {\n return {\n start: Math.min(span0.start, span1.start),\n end: Math.max(span0.end, span1.end)\n };\n}\n\nfunction intersectSpans(span0, span1) {\n var start = Math.max(span0.start, span1.start);\n var end = Math.min(span0.end, span1.end);\n\n if (start < end) {\n return {\n start: start,\n end: end\n };\n }\n\n return null;\n} // general util\n// ---------------------------------------------------------------------------------------------------------------------\n\n\nfunction insertAt(arr, index, item) {\n arr.splice(index, 0, item);\n}\n\nfunction binarySearch(a, searchVal, getItemVal) {\n var startIndex = 0;\n var endIndex = a.length; // exclusive\n\n if (!endIndex || searchVal < getItemVal(a[startIndex])) {\n // no items OR before first item\n return [0, 0];\n }\n\n if (searchVal > getItemVal(a[endIndex - 1])) {\n // after last item\n return [endIndex, 0];\n }\n\n while (startIndex < endIndex) {\n var middleIndex = Math.floor(startIndex + (endIndex - startIndex) / 2);\n var middleVal = getItemVal(a[middleIndex]);\n\n if (searchVal < middleVal) {\n endIndex = middleIndex;\n } else if (searchVal > middleVal) {\n startIndex = middleIndex + 1;\n } else {\n // equal!\n return [middleIndex, 1];\n }\n }\n\n return [startIndex, 0];\n}\n\nvar Interaction =\n/** @class */\nfunction () {\n function Interaction(settings) {\n this.component = settings.component;\n this.isHitComboAllowed = settings.isHitComboAllowed || null;\n }\n\n Interaction.prototype.destroy = function () {};\n\n return Interaction;\n}();\n\nfunction parseInteractionSettings(component, input) {\n return {\n component: component,\n el: input.el,\n useEventCenter: input.useEventCenter != null ? input.useEventCenter : true,\n isHitComboAllowed: input.isHitComboAllowed || null\n };\n}\n\nfunction interactionSettingsToStore(settings) {\n var _a;\n\n return _a = {}, _a[settings.component.uid] = settings, _a;\n} // global state\n\n\nvar interactionSettingsStore = {};\n/*\nAn abstraction for a dragging interaction originating on an event.\nDoes higher-level things than PointerDragger, such as possibly:\n- a \"mirror\" that moves with the pointer\n- a minimum number of pixels or other criteria for a true drag to begin\n\nsubclasses must emit:\n- pointerdown\n- dragstart\n- dragmove\n- pointerup\n- dragend\n*/\n\nvar ElementDragging =\n/** @class */\nfunction () {\n function ElementDragging(el, selector) {\n this.emitter = new Emitter();\n }\n\n ElementDragging.prototype.destroy = function () {};\n\n ElementDragging.prototype.setMirrorIsVisible = function (bool) {// optional if subclass doesn't want to support a mirror\n };\n\n ElementDragging.prototype.setMirrorNeedsRevert = function (bool) {// optional if subclass doesn't want to support a mirror\n };\n\n ElementDragging.prototype.setAutoScrollEnabled = function (bool) {// optional\n };\n\n return ElementDragging;\n}(); // TODO: get rid of this in favor of options system,\n// tho it's really easy to access this globally rather than pass thru options.\n\n\nvar config = {};\n/*\nInformation about what will happen when an external element is dragged-and-dropped\nonto a calendar. Contains information for creating an event.\n*/\n\nvar DRAG_META_REFINERS = {\n startTime: createDuration,\n duration: createDuration,\n create: Boolean,\n sourceId: String\n};\n\nfunction parseDragMeta(raw) {\n var _a = refineProps(raw, DRAG_META_REFINERS),\n refined = _a.refined,\n extra = _a.extra;\n\n return {\n startTime: refined.startTime || null,\n duration: refined.duration || null,\n create: refined.create != null ? refined.create : true,\n sourceId: refined.sourceId,\n leftoverProps: extra\n };\n}\n\nvar ToolbarSection =\n/** @class */\nfunction (_super) {\n __extends(ToolbarSection, _super);\n\n function ToolbarSection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ToolbarSection.prototype.render = function () {\n var _this = this;\n\n var children = this.props.widgetGroups.map(function (widgetGroup) {\n return _this.renderWidgetGroup(widgetGroup);\n });\n return createElement.apply(void 0, __spreadArray(['div', {\n className: 'fc-toolbar-chunk'\n }], children));\n };\n\n ToolbarSection.prototype.renderWidgetGroup = function (widgetGroup) {\n var props = this.props;\n var theme = this.context.theme;\n var children = [];\n var isOnlyButtons = true;\n\n for (var _i = 0, widgetGroup_1 = widgetGroup; _i < widgetGroup_1.length; _i++) {\n var widget = widgetGroup_1[_i];\n var buttonName = widget.buttonName,\n buttonClick = widget.buttonClick,\n buttonText = widget.buttonText,\n buttonIcon = widget.buttonIcon,\n buttonHint = widget.buttonHint;\n\n if (buttonName === 'title') {\n isOnlyButtons = false;\n children.push(createElement(\"h2\", {\n className: \"fc-toolbar-title\",\n id: props.titleId\n }, props.title));\n } else {\n var isPressed = buttonName === props.activeButton;\n var isDisabled = !props.isTodayEnabled && buttonName === 'today' || !props.isPrevEnabled && buttonName === 'prev' || !props.isNextEnabled && buttonName === 'next';\n var buttonClasses = [\"fc-\" + buttonName + \"-button\", theme.getClass('button')];\n\n if (isPressed) {\n buttonClasses.push(theme.getClass('buttonActive'));\n }\n\n children.push(createElement(\"button\", {\n type: \"button\",\n title: typeof buttonHint === 'function' ? buttonHint(props.navUnit) : buttonHint,\n disabled: isDisabled,\n \"aria-pressed\": isPressed,\n className: buttonClasses.join(' '),\n onClick: buttonClick\n }, buttonText || (buttonIcon ? createElement(\"span\", {\n className: buttonIcon\n }) : '')));\n }\n }\n\n if (children.length > 1) {\n var groupClassName = isOnlyButtons && theme.getClass('buttonGroup') || '';\n return createElement.apply(void 0, __spreadArray(['div', {\n className: groupClassName\n }], children));\n }\n\n return children[0];\n };\n\n return ToolbarSection;\n}(BaseComponent);\n\nvar Toolbar =\n/** @class */\nfunction (_super) {\n __extends(Toolbar, _super);\n\n function Toolbar() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Toolbar.prototype.render = function () {\n var _a = this.props,\n model = _a.model,\n extraClassName = _a.extraClassName;\n var forceLtr = false;\n var startContent;\n var endContent;\n var sectionWidgets = model.sectionWidgets;\n var centerContent = sectionWidgets.center;\n\n if (sectionWidgets.left) {\n forceLtr = true;\n startContent = sectionWidgets.left;\n } else {\n startContent = sectionWidgets.start;\n }\n\n if (sectionWidgets.right) {\n forceLtr = true;\n endContent = sectionWidgets.right;\n } else {\n endContent = sectionWidgets.end;\n }\n\n var classNames = [extraClassName || '', 'fc-toolbar', forceLtr ? 'fc-toolbar-ltr' : ''];\n return createElement(\"div\", {\n className: classNames.join(' ')\n }, this.renderSection('start', startContent || []), this.renderSection('center', centerContent || []), this.renderSection('end', endContent || []));\n };\n\n Toolbar.prototype.renderSection = function (key, widgetGroups) {\n var props = this.props;\n return createElement(ToolbarSection, {\n key: key,\n widgetGroups: widgetGroups,\n title: props.title,\n navUnit: props.navUnit,\n activeButton: props.activeButton,\n isTodayEnabled: props.isTodayEnabled,\n isPrevEnabled: props.isPrevEnabled,\n isNextEnabled: props.isNextEnabled,\n titleId: props.titleId\n });\n };\n\n return Toolbar;\n}(BaseComponent); // TODO: do function component?\n\n\nvar ViewContainer =\n/** @class */\nfunction (_super) {\n __extends(ViewContainer, _super);\n\n function ViewContainer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.state = {\n availableWidth: null\n };\n\n _this.handleEl = function (el) {\n _this.el = el;\n setRef(_this.props.elRef, el);\n\n _this.updateAvailableWidth();\n };\n\n _this.handleResize = function () {\n _this.updateAvailableWidth();\n };\n\n return _this;\n }\n\n ViewContainer.prototype.render = function () {\n var _a = this,\n props = _a.props,\n state = _a.state;\n\n var aspectRatio = props.aspectRatio;\n var classNames = ['fc-view-harness', aspectRatio || props.liquid || props.height ? 'fc-view-harness-active' // harness controls the height\n : 'fc-view-harness-passive' // let the view do the height\n ];\n var height = '';\n var paddingBottom = '';\n\n if (aspectRatio) {\n if (state.availableWidth !== null) {\n height = state.availableWidth / aspectRatio;\n } else {\n // while waiting to know availableWidth, we can't set height to *zero*\n // because will cause lots of unnecessary scrollbars within scrollgrid.\n // BETTER: don't start rendering ANYTHING yet until we know container width\n // NOTE: why not always use paddingBottom? Causes height oscillation (issue 5606)\n paddingBottom = 1 / aspectRatio * 100 + \"%\";\n }\n } else {\n height = props.height || '';\n }\n\n return createElement(\"div\", {\n \"aria-labelledby\": props.labeledById,\n ref: this.handleEl,\n className: classNames.join(' '),\n style: {\n height: height,\n paddingBottom: paddingBottom\n }\n }, props.children);\n };\n\n ViewContainer.prototype.componentDidMount = function () {\n this.context.addResizeHandler(this.handleResize);\n };\n\n ViewContainer.prototype.componentWillUnmount = function () {\n this.context.removeResizeHandler(this.handleResize);\n };\n\n ViewContainer.prototype.updateAvailableWidth = function () {\n if (this.el && // needed. but why?\n this.props.aspectRatio // aspectRatio is the only height setting that needs availableWidth\n ) {\n this.setState({\n availableWidth: this.el.offsetWidth\n });\n }\n };\n\n return ViewContainer;\n}(BaseComponent);\n/*\nDetects when the user clicks on an event within a DateComponent\n*/\n\n\nvar EventClicking =\n/** @class */\nfunction (_super) {\n __extends(EventClicking, _super);\n\n function EventClicking(settings) {\n var _this = _super.call(this, settings) || this;\n\n _this.handleSegClick = function (ev, segEl) {\n var component = _this.component;\n var context = component.context;\n var seg = getElSeg(segEl);\n\n if (seg && // might be the
surrounding the more link\n component.isValidSegDownEl(ev.target)) {\n // our way to simulate a link click for elements that can't be tags\n // grab before trigger fired in case trigger trashes DOM thru rerendering\n var hasUrlContainer = elementClosest(ev.target, '.fc-event-forced-url');\n var url = hasUrlContainer ? hasUrlContainer.querySelector('a[href]').href : '';\n context.emitter.trigger('eventClick', {\n el: segEl,\n event: new EventApi(component.context, seg.eventRange.def, seg.eventRange.instance),\n jsEvent: ev,\n view: context.viewApi\n });\n\n if (url && !ev.defaultPrevented) {\n window.location.href = url;\n }\n }\n };\n\n _this.destroy = listenBySelector(settings.el, 'click', '.fc-event', // on both fg and bg events\n _this.handleSegClick);\n return _this;\n }\n\n return EventClicking;\n}(Interaction);\n/*\nTriggers events and adds/removes core classNames when the user's pointer\nenters/leaves event-elements of a component.\n*/\n\n\nvar EventHovering =\n/** @class */\nfunction (_super) {\n __extends(EventHovering, _super);\n\n function EventHovering(settings) {\n var _this = _super.call(this, settings) || this; // for simulating an eventMouseLeave when the event el is destroyed while mouse is over it\n\n\n _this.handleEventElRemove = function (el) {\n if (el === _this.currentSegEl) {\n _this.handleSegLeave(null, _this.currentSegEl);\n }\n };\n\n _this.handleSegEnter = function (ev, segEl) {\n if (getElSeg(segEl)) {\n // TODO: better way to make sure not hovering over more+ link or its wrapper\n _this.currentSegEl = segEl;\n\n _this.triggerEvent('eventMouseEnter', ev, segEl);\n }\n };\n\n _this.handleSegLeave = function (ev, segEl) {\n if (_this.currentSegEl) {\n _this.currentSegEl = null;\n\n _this.triggerEvent('eventMouseLeave', ev, segEl);\n }\n };\n\n _this.removeHoverListeners = listenToHoverBySelector(settings.el, '.fc-event', // on both fg and bg events\n _this.handleSegEnter, _this.handleSegLeave);\n return _this;\n }\n\n EventHovering.prototype.destroy = function () {\n this.removeHoverListeners();\n };\n\n EventHovering.prototype.triggerEvent = function (publicEvName, ev, segEl) {\n var component = this.component;\n var context = component.context;\n var seg = getElSeg(segEl);\n\n if (!ev || component.isValidSegDownEl(ev.target)) {\n context.emitter.trigger(publicEvName, {\n el: segEl,\n event: new EventApi(context, seg.eventRange.def, seg.eventRange.instance),\n jsEvent: ev,\n view: context.viewApi\n });\n }\n };\n\n return EventHovering;\n}(Interaction);\n\nvar CalendarContent =\n/** @class */\nfunction (_super) {\n __extends(CalendarContent, _super);\n\n function CalendarContent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.buildViewContext = memoize(buildViewContext);\n _this.buildViewPropTransformers = memoize(buildViewPropTransformers);\n _this.buildToolbarProps = memoize(buildToolbarProps);\n _this.headerRef = createRef();\n _this.footerRef = createRef();\n _this.interactionsStore = {}; // eslint-disable-next-line\n\n _this.state = {\n viewLabelId: getUniqueDomId()\n }; // Component Registration\n // -----------------------------------------------------------------------------------------------------------------\n\n _this.registerInteractiveComponent = function (component, settingsInput) {\n var settings = parseInteractionSettings(component, settingsInput);\n var DEFAULT_INTERACTIONS = [EventClicking, EventHovering];\n var interactionClasses = DEFAULT_INTERACTIONS.concat(_this.props.pluginHooks.componentInteractions);\n var interactions = interactionClasses.map(function (TheInteractionClass) {\n return new TheInteractionClass(settings);\n });\n _this.interactionsStore[component.uid] = interactions;\n interactionSettingsStore[component.uid] = settings;\n };\n\n _this.unregisterInteractiveComponent = function (component) {\n for (var _i = 0, _a = _this.interactionsStore[component.uid]; _i < _a.length; _i++) {\n var listener = _a[_i];\n listener.destroy();\n }\n\n delete _this.interactionsStore[component.uid];\n delete interactionSettingsStore[component.uid];\n }; // Resizing\n // -----------------------------------------------------------------------------------------------------------------\n\n\n _this.resizeRunner = new DelayedRunner(function () {\n _this.props.emitter.trigger('_resize', true); // should window resizes be considered \"forced\" ?\n\n\n _this.props.emitter.trigger('windowResize', {\n view: _this.props.viewApi\n });\n });\n\n _this.handleWindowResize = function (ev) {\n var options = _this.props.options;\n\n if (options.handleWindowResize && ev.target === window // avoid jqui events\n ) {\n _this.resizeRunner.request(options.windowResizeDelay);\n }\n };\n\n return _this;\n }\n /*\n renders INSIDE of an outer div\n */\n\n\n CalendarContent.prototype.render = function () {\n var props = this.props;\n var toolbarConfig = props.toolbarConfig,\n options = props.options;\n var toolbarProps = this.buildToolbarProps(props.viewSpec, props.dateProfile, props.dateProfileGenerator, props.currentDate, getNow(props.options.now, props.dateEnv), // TODO: use NowTimer????\n props.viewTitle);\n var viewVGrow = false;\n var viewHeight = '';\n var viewAspectRatio;\n\n if (props.isHeightAuto || props.forPrint) {\n viewHeight = '';\n } else if (options.height != null) {\n viewVGrow = true;\n } else if (options.contentHeight != null) {\n viewHeight = options.contentHeight;\n } else {\n viewAspectRatio = Math.max(options.aspectRatio, 0.5); // prevent from getting too tall\n }\n\n var viewContext = this.buildViewContext(props.viewSpec, props.viewApi, props.options, props.dateProfileGenerator, props.dateEnv, props.theme, props.pluginHooks, props.dispatch, props.getCurrentData, props.emitter, props.calendarApi, this.registerInteractiveComponent, this.unregisterInteractiveComponent);\n var viewLabelId = toolbarConfig.header && toolbarConfig.header.hasTitle ? this.state.viewLabelId : '';\n return createElement(ViewContextType.Provider, {\n value: viewContext\n }, toolbarConfig.header && createElement(Toolbar, __assign({\n ref: this.headerRef,\n extraClassName: \"fc-header-toolbar\",\n model: toolbarConfig.header,\n titleId: viewLabelId\n }, toolbarProps)), createElement(ViewContainer, {\n liquid: viewVGrow,\n height: viewHeight,\n aspectRatio: viewAspectRatio,\n labeledById: viewLabelId\n }, this.renderView(props), this.buildAppendContent()), toolbarConfig.footer && createElement(Toolbar, __assign({\n ref: this.footerRef,\n extraClassName: \"fc-footer-toolbar\",\n model: toolbarConfig.footer,\n titleId: \"\"\n }, toolbarProps)));\n };\n\n CalendarContent.prototype.componentDidMount = function () {\n var props = this.props;\n this.calendarInteractions = props.pluginHooks.calendarInteractions.map(function (CalendarInteractionClass) {\n return new CalendarInteractionClass(props);\n });\n window.addEventListener('resize', this.handleWindowResize);\n var propSetHandlers = props.pluginHooks.propSetHandlers;\n\n for (var propName in propSetHandlers) {\n propSetHandlers[propName](props[propName], props);\n }\n };\n\n CalendarContent.prototype.componentDidUpdate = function (prevProps) {\n var props = this.props;\n var propSetHandlers = props.pluginHooks.propSetHandlers;\n\n for (var propName in propSetHandlers) {\n if (props[propName] !== prevProps[propName]) {\n propSetHandlers[propName](props[propName], props);\n }\n }\n };\n\n CalendarContent.prototype.componentWillUnmount = function () {\n window.removeEventListener('resize', this.handleWindowResize);\n this.resizeRunner.clear();\n\n for (var _i = 0, _a = this.calendarInteractions; _i < _a.length; _i++) {\n var interaction = _a[_i];\n interaction.destroy();\n }\n\n this.props.emitter.trigger('_unmount');\n };\n\n CalendarContent.prototype.buildAppendContent = function () {\n var props = this.props;\n var children = props.pluginHooks.viewContainerAppends.map(function (buildAppendContent) {\n return buildAppendContent(props);\n });\n return createElement.apply(void 0, __spreadArray([Fragment, {}], children));\n };\n\n CalendarContent.prototype.renderView = function (props) {\n var pluginHooks = props.pluginHooks;\n var viewSpec = props.viewSpec;\n var viewProps = {\n dateProfile: props.dateProfile,\n businessHours: props.businessHours,\n eventStore: props.renderableEventStore,\n eventUiBases: props.eventUiBases,\n dateSelection: props.dateSelection,\n eventSelection: props.eventSelection,\n eventDrag: props.eventDrag,\n eventResize: props.eventResize,\n isHeightAuto: props.isHeightAuto,\n forPrint: props.forPrint\n };\n var transformers = this.buildViewPropTransformers(pluginHooks.viewPropsTransformers);\n\n for (var _i = 0, transformers_1 = transformers; _i < transformers_1.length; _i++) {\n var transformer = transformers_1[_i];\n\n __assign(viewProps, transformer.transform(viewProps, props));\n }\n\n var ViewComponent = viewSpec.component;\n return createElement(ViewComponent, __assign({}, viewProps));\n };\n\n return CalendarContent;\n}(PureComponent);\n\nfunction buildToolbarProps(viewSpec, dateProfile, dateProfileGenerator, currentDate, now, title) {\n // don't force any date-profiles to valid date profiles (the `false`) so that we can tell if it's invalid\n var todayInfo = dateProfileGenerator.build(now, undefined, false); // TODO: need `undefined` or else INFINITE LOOP for some reason\n\n var prevInfo = dateProfileGenerator.buildPrev(dateProfile, currentDate, false);\n var nextInfo = dateProfileGenerator.buildNext(dateProfile, currentDate, false);\n return {\n title: title,\n activeButton: viewSpec.type,\n navUnit: viewSpec.singleUnit,\n isTodayEnabled: todayInfo.isValid && !rangeContainsMarker(dateProfile.currentRange, now),\n isPrevEnabled: prevInfo.isValid,\n isNextEnabled: nextInfo.isValid\n };\n} // Plugin\n// -----------------------------------------------------------------------------------------------------------------\n\n\nfunction buildViewPropTransformers(theClasses) {\n return theClasses.map(function (TheClass) {\n return new TheClass();\n });\n}\n\nvar CalendarRoot =\n/** @class */\nfunction (_super) {\n __extends(CalendarRoot, _super);\n\n function CalendarRoot() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.state = {\n forPrint: false\n };\n\n _this.handleBeforePrint = function () {\n _this.setState({\n forPrint: true\n });\n };\n\n _this.handleAfterPrint = function () {\n _this.setState({\n forPrint: false\n });\n };\n\n return _this;\n }\n\n CalendarRoot.prototype.render = function () {\n var props = this.props;\n var options = props.options;\n var forPrint = this.state.forPrint;\n var isHeightAuto = forPrint || options.height === 'auto' || options.contentHeight === 'auto';\n var height = !isHeightAuto && options.height != null ? options.height : '';\n var classNames = ['fc', forPrint ? 'fc-media-print' : 'fc-media-screen', \"fc-direction-\" + options.direction, props.theme.getClass('root')];\n\n if (!getCanVGrowWithinCell()) {\n classNames.push('fc-liquid-hack');\n }\n\n return props.children(classNames, height, isHeightAuto, forPrint);\n };\n\n CalendarRoot.prototype.componentDidMount = function () {\n var emitter = this.props.emitter;\n emitter.on('_beforeprint', this.handleBeforePrint);\n emitter.on('_afterprint', this.handleAfterPrint);\n };\n\n CalendarRoot.prototype.componentWillUnmount = function () {\n var emitter = this.props.emitter;\n emitter.off('_beforeprint', this.handleBeforePrint);\n emitter.off('_afterprint', this.handleAfterPrint);\n };\n\n return CalendarRoot;\n}(BaseComponent); // Computes a default column header formatting string if `colFormat` is not explicitly defined\n\n\nfunction computeFallbackHeaderFormat(datesRepDistinctDays, dayCnt) {\n // if more than one week row, or if there are a lot of columns with not much space,\n // put just the day numbers will be in each cell\n if (!datesRepDistinctDays || dayCnt > 10) {\n return createFormatter({\n weekday: 'short'\n }); // \"Sat\"\n }\n\n if (dayCnt > 1) {\n return createFormatter({\n weekday: 'short',\n month: 'numeric',\n day: 'numeric',\n omitCommas: true\n }); // \"Sat 11/12\"\n }\n\n return createFormatter({\n weekday: 'long'\n }); // \"Saturday\"\n}\n\nvar CLASS_NAME = 'fc-col-header-cell'; // do the cushion too? no\n\nfunction renderInner$1(hookProps) {\n return hookProps.text;\n}\n\nvar TableDateCell =\n/** @class */\nfunction (_super) {\n __extends(TableDateCell, _super);\n\n function TableDateCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TableDateCell.prototype.render = function () {\n var _a = this.context,\n dateEnv = _a.dateEnv,\n options = _a.options,\n theme = _a.theme,\n viewApi = _a.viewApi;\n var props = this.props;\n var date = props.date,\n dateProfile = props.dateProfile;\n var dayMeta = getDateMeta(date, props.todayRange, null, dateProfile);\n var classNames = [CLASS_NAME].concat(getDayClassNames(dayMeta, theme));\n var text = dateEnv.format(date, props.dayHeaderFormat); // if colCnt is 1, we are already in a day-view and don't need a navlink\n\n var navLinkAttrs = !dayMeta.isDisabled && props.colCnt > 1 ? buildNavLinkAttrs(this.context, date) : {};\n\n var hookProps = __assign(__assign(__assign({\n date: dateEnv.toDate(date),\n view: viewApi\n }, props.extraHookProps), {\n text: text\n }), dayMeta);\n\n return createElement(RenderHook, {\n hookProps: hookProps,\n classNames: options.dayHeaderClassNames,\n content: options.dayHeaderContent,\n defaultContent: renderInner$1,\n didMount: options.dayHeaderDidMount,\n willUnmount: options.dayHeaderWillUnmount\n }, function (rootElRef, customClassNames, innerElRef, innerContent) {\n return createElement(\"th\", __assign({\n ref: rootElRef,\n role: \"columnheader\",\n className: classNames.concat(customClassNames).join(' '),\n \"data-date\": !dayMeta.isDisabled ? formatDayString(date) : undefined,\n colSpan: props.colSpan\n }, props.extraDataAttrs), createElement(\"div\", {\n className: \"fc-scrollgrid-sync-inner\"\n }, !dayMeta.isDisabled && createElement(\"a\", __assign({\n ref: innerElRef,\n className: ['fc-col-header-cell-cushion', props.isSticky ? 'fc-sticky' : ''].join(' ')\n }, navLinkAttrs), innerContent)));\n });\n };\n\n return TableDateCell;\n}(BaseComponent);\n\nvar WEEKDAY_FORMAT = createFormatter({\n weekday: 'long'\n});\n\nvar TableDowCell =\n/** @class */\nfunction (_super) {\n __extends(TableDowCell, _super);\n\n function TableDowCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TableDowCell.prototype.render = function () {\n var props = this.props;\n var _a = this.context,\n dateEnv = _a.dateEnv,\n theme = _a.theme,\n viewApi = _a.viewApi,\n options = _a.options;\n var date = addDays(new Date(259200000), props.dow); // start with Sun, 04 Jan 1970 00:00:00 GMT\n\n var dateMeta = {\n dow: props.dow,\n isDisabled: false,\n isFuture: false,\n isPast: false,\n isToday: false,\n isOther: false\n };\n var classNames = [CLASS_NAME].concat(getDayClassNames(dateMeta, theme), props.extraClassNames || []);\n var text = dateEnv.format(date, props.dayHeaderFormat);\n\n var hookProps = __assign(__assign(__assign(__assign({\n // TODO: make this public?\n date: date\n }, dateMeta), {\n view: viewApi\n }), props.extraHookProps), {\n text: text\n });\n\n return createElement(RenderHook, {\n hookProps: hookProps,\n classNames: options.dayHeaderClassNames,\n content: options.dayHeaderContent,\n defaultContent: renderInner$1,\n didMount: options.dayHeaderDidMount,\n willUnmount: options.dayHeaderWillUnmount\n }, function (rootElRef, customClassNames, innerElRef, innerContent) {\n return createElement(\"th\", __assign({\n ref: rootElRef,\n role: \"columnheader\",\n className: classNames.concat(customClassNames).join(' '),\n colSpan: props.colSpan\n }, props.extraDataAttrs), createElement(\"div\", {\n className: \"fc-scrollgrid-sync-inner\"\n }, createElement(\"a\", {\n \"aria-label\": dateEnv.format(date, WEEKDAY_FORMAT),\n className: ['fc-col-header-cell-cushion', props.isSticky ? 'fc-sticky' : ''].join(' '),\n ref: innerElRef\n }, innerContent)));\n });\n };\n\n return TableDowCell;\n}(BaseComponent);\n\nvar NowTimer =\n/** @class */\nfunction (_super) {\n __extends(NowTimer, _super);\n\n function NowTimer(props, context) {\n var _this = _super.call(this, props, context) || this;\n\n _this.initialNowDate = getNow(context.options.now, context.dateEnv);\n _this.initialNowQueriedMs = new Date().valueOf();\n _this.state = _this.computeTiming().currentState;\n return _this;\n }\n\n NowTimer.prototype.render = function () {\n var _a = this,\n props = _a.props,\n state = _a.state;\n\n return props.children(state.nowDate, state.todayRange);\n };\n\n NowTimer.prototype.componentDidMount = function () {\n this.setTimeout();\n };\n\n NowTimer.prototype.componentDidUpdate = function (prevProps) {\n if (prevProps.unit !== this.props.unit) {\n this.clearTimeout();\n this.setTimeout();\n }\n };\n\n NowTimer.prototype.componentWillUnmount = function () {\n this.clearTimeout();\n };\n\n NowTimer.prototype.computeTiming = function () {\n var _a = this,\n props = _a.props,\n context = _a.context;\n\n var unroundedNow = addMs(this.initialNowDate, new Date().valueOf() - this.initialNowQueriedMs);\n var currentUnitStart = context.dateEnv.startOf(unroundedNow, props.unit);\n var nextUnitStart = context.dateEnv.add(currentUnitStart, createDuration(1, props.unit));\n var waitMs = nextUnitStart.valueOf() - unroundedNow.valueOf(); // there is a max setTimeout ms value (https://stackoverflow.com/a/3468650/96342)\n // ensure no longer than a day\n\n waitMs = Math.min(1000 * 60 * 60 * 24, waitMs);\n return {\n currentState: {\n nowDate: currentUnitStart,\n todayRange: buildDayRange(currentUnitStart)\n },\n nextState: {\n nowDate: nextUnitStart,\n todayRange: buildDayRange(nextUnitStart)\n },\n waitMs: waitMs\n };\n };\n\n NowTimer.prototype.setTimeout = function () {\n var _this = this;\n\n var _a = this.computeTiming(),\n nextState = _a.nextState,\n waitMs = _a.waitMs;\n\n this.timeoutId = setTimeout(function () {\n _this.setState(nextState, function () {\n _this.setTimeout();\n });\n }, waitMs);\n };\n\n NowTimer.prototype.clearTimeout = function () {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n }\n };\n\n NowTimer.contextType = ViewContextType;\n return NowTimer;\n}(Component);\n\nfunction buildDayRange(date) {\n var start = startOfDay(date);\n var end = addDays(start, 1);\n return {\n start: start,\n end: end\n };\n}\n\nvar DayHeader =\n/** @class */\nfunction (_super) {\n __extends(DayHeader, _super);\n\n function DayHeader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.createDayHeaderFormatter = memoize(createDayHeaderFormatter);\n return _this;\n }\n\n DayHeader.prototype.render = function () {\n var context = this.context;\n var _a = this.props,\n dates = _a.dates,\n dateProfile = _a.dateProfile,\n datesRepDistinctDays = _a.datesRepDistinctDays,\n renderIntro = _a.renderIntro;\n var dayHeaderFormat = this.createDayHeaderFormatter(context.options.dayHeaderFormat, datesRepDistinctDays, dates.length);\n return createElement(NowTimer, {\n unit: \"day\"\n }, function (nowDate, todayRange) {\n return createElement(\"tr\", {\n role: \"row\"\n }, renderIntro && renderIntro('day'), dates.map(function (date) {\n return datesRepDistinctDays ? createElement(TableDateCell, {\n key: date.toISOString(),\n date: date,\n dateProfile: dateProfile,\n todayRange: todayRange,\n colCnt: dates.length,\n dayHeaderFormat: dayHeaderFormat\n }) : createElement(TableDowCell, {\n key: date.getUTCDay(),\n dow: date.getUTCDay(),\n dayHeaderFormat: dayHeaderFormat\n });\n }));\n });\n };\n\n return DayHeader;\n}(BaseComponent);\n\nfunction createDayHeaderFormatter(explicitFormat, datesRepDistinctDays, dateCnt) {\n return explicitFormat || computeFallbackHeaderFormat(datesRepDistinctDays, dateCnt);\n}\n\nvar DaySeriesModel =\n/** @class */\nfunction () {\n function DaySeriesModel(range, dateProfileGenerator) {\n var date = range.start;\n var end = range.end;\n var indices = [];\n var dates = [];\n var dayIndex = -1;\n\n while (date < end) {\n // loop each day from start to end\n if (dateProfileGenerator.isHiddenDay(date)) {\n indices.push(dayIndex + 0.5); // mark that it's between indices\n } else {\n dayIndex += 1;\n indices.push(dayIndex);\n dates.push(date);\n }\n\n date = addDays(date, 1);\n }\n\n this.dates = dates;\n this.indices = indices;\n this.cnt = dates.length;\n }\n\n DaySeriesModel.prototype.sliceRange = function (range) {\n var firstIndex = this.getDateDayIndex(range.start); // inclusive first index\n\n var lastIndex = this.getDateDayIndex(addDays(range.end, -1)); // inclusive last index\n\n var clippedFirstIndex = Math.max(0, firstIndex);\n var clippedLastIndex = Math.min(this.cnt - 1, lastIndex); // deal with in-between indices\n\n clippedFirstIndex = Math.ceil(clippedFirstIndex); // in-between starts round to next cell\n\n clippedLastIndex = Math.floor(clippedLastIndex); // in-between ends round to prev cell\n\n if (clippedFirstIndex <= clippedLastIndex) {\n return {\n firstIndex: clippedFirstIndex,\n lastIndex: clippedLastIndex,\n isStart: firstIndex === clippedFirstIndex,\n isEnd: lastIndex === clippedLastIndex\n };\n }\n\n return null;\n }; // Given a date, returns its chronolocial cell-index from the first cell of the grid.\n // If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets.\n // If before the first offset, returns a negative number.\n // If after the last offset, returns an offset past the last cell offset.\n // Only works for *start* dates of cells. Will not work for exclusive end dates for cells.\n\n\n DaySeriesModel.prototype.getDateDayIndex = function (date) {\n var indices = this.indices;\n var dayOffset = Math.floor(diffDays(this.dates[0], date));\n\n if (dayOffset < 0) {\n return indices[0] - 1;\n }\n\n if (dayOffset >= indices.length) {\n return indices[indices.length - 1] + 1;\n }\n\n return indices[dayOffset];\n };\n\n return DaySeriesModel;\n}();\n\nvar DayTableModel =\n/** @class */\nfunction () {\n function DayTableModel(daySeries, breakOnWeeks) {\n var dates = daySeries.dates;\n var daysPerRow;\n var firstDay;\n var rowCnt;\n\n if (breakOnWeeks) {\n // count columns until the day-of-week repeats\n firstDay = dates[0].getUTCDay();\n\n for (daysPerRow = 1; daysPerRow < dates.length; daysPerRow += 1) {\n if (dates[daysPerRow].getUTCDay() === firstDay) {\n break;\n }\n }\n\n rowCnt = Math.ceil(dates.length / daysPerRow);\n } else {\n rowCnt = 1;\n daysPerRow = dates.length;\n }\n\n this.rowCnt = rowCnt;\n this.colCnt = daysPerRow;\n this.daySeries = daySeries;\n this.cells = this.buildCells();\n this.headerDates = this.buildHeaderDates();\n }\n\n DayTableModel.prototype.buildCells = function () {\n var rows = [];\n\n for (var row = 0; row < this.rowCnt; row += 1) {\n var cells = [];\n\n for (var col = 0; col < this.colCnt; col += 1) {\n cells.push(this.buildCell(row, col));\n }\n\n rows.push(cells);\n }\n\n return rows;\n };\n\n DayTableModel.prototype.buildCell = function (row, col) {\n var date = this.daySeries.dates[row * this.colCnt + col];\n return {\n key: date.toISOString(),\n date: date\n };\n };\n\n DayTableModel.prototype.buildHeaderDates = function () {\n var dates = [];\n\n for (var col = 0; col < this.colCnt; col += 1) {\n dates.push(this.cells[0][col].date);\n }\n\n return dates;\n };\n\n DayTableModel.prototype.sliceRange = function (range) {\n var colCnt = this.colCnt;\n var seriesSeg = this.daySeries.sliceRange(range);\n var segs = [];\n\n if (seriesSeg) {\n var firstIndex = seriesSeg.firstIndex,\n lastIndex = seriesSeg.lastIndex;\n var index = firstIndex;\n\n while (index <= lastIndex) {\n var row = Math.floor(index / colCnt);\n var nextIndex = Math.min((row + 1) * colCnt, lastIndex + 1);\n segs.push({\n row: row,\n firstCol: index % colCnt,\n lastCol: (nextIndex - 1) % colCnt,\n isStart: seriesSeg.isStart && index === firstIndex,\n isEnd: seriesSeg.isEnd && nextIndex - 1 === lastIndex\n });\n index = nextIndex;\n }\n }\n\n return segs;\n };\n\n return DayTableModel;\n}();\n\nvar Slicer =\n/** @class */\nfunction () {\n function Slicer() {\n this.sliceBusinessHours = memoize(this._sliceBusinessHours);\n this.sliceDateSelection = memoize(this._sliceDateSpan);\n this.sliceEventStore = memoize(this._sliceEventStore);\n this.sliceEventDrag = memoize(this._sliceInteraction);\n this.sliceEventResize = memoize(this._sliceInteraction);\n this.forceDayIfListItem = false; // hack\n }\n\n Slicer.prototype.sliceProps = function (props, dateProfile, nextDayThreshold, context) {\n var extraArgs = [];\n\n for (var _i = 4; _i < arguments.length; _i++) {\n extraArgs[_i - 4] = arguments[_i];\n }\n\n var eventUiBases = props.eventUiBases;\n var eventSegs = this.sliceEventStore.apply(this, __spreadArray([props.eventStore, eventUiBases, dateProfile, nextDayThreshold], extraArgs));\n return {\n dateSelectionSegs: this.sliceDateSelection.apply(this, __spreadArray([props.dateSelection, eventUiBases, context], extraArgs)),\n businessHourSegs: this.sliceBusinessHours.apply(this, __spreadArray([props.businessHours, dateProfile, nextDayThreshold, context], extraArgs)),\n fgEventSegs: eventSegs.fg,\n bgEventSegs: eventSegs.bg,\n eventDrag: this.sliceEventDrag.apply(this, __spreadArray([props.eventDrag, eventUiBases, dateProfile, nextDayThreshold], extraArgs)),\n eventResize: this.sliceEventResize.apply(this, __spreadArray([props.eventResize, eventUiBases, dateProfile, nextDayThreshold], extraArgs)),\n eventSelection: props.eventSelection\n }; // TODO: give interactionSegs?\n };\n\n Slicer.prototype.sliceNowDate = function ( // does not memoize\n date, context) {\n var extraArgs = [];\n\n for (var _i = 2; _i < arguments.length; _i++) {\n extraArgs[_i - 2] = arguments[_i];\n }\n\n return this._sliceDateSpan.apply(this, __spreadArray([{\n range: {\n start: date,\n end: addMs(date, 1)\n },\n allDay: false\n }, {}, context], extraArgs));\n };\n\n Slicer.prototype._sliceBusinessHours = function (businessHours, dateProfile, nextDayThreshold, context) {\n var extraArgs = [];\n\n for (var _i = 4; _i < arguments.length; _i++) {\n extraArgs[_i - 4] = arguments[_i];\n }\n\n if (!businessHours) {\n return [];\n }\n\n return this._sliceEventStore.apply(this, __spreadArray([expandRecurring(businessHours, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), context), {}, dateProfile, nextDayThreshold], extraArgs)).bg;\n };\n\n Slicer.prototype._sliceEventStore = function (eventStore, eventUiBases, dateProfile, nextDayThreshold) {\n var extraArgs = [];\n\n for (var _i = 4; _i < arguments.length; _i++) {\n extraArgs[_i - 4] = arguments[_i];\n }\n\n if (eventStore) {\n var rangeRes = sliceEventStore(eventStore, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);\n return {\n bg: this.sliceEventRanges(rangeRes.bg, extraArgs),\n fg: this.sliceEventRanges(rangeRes.fg, extraArgs)\n };\n }\n\n return {\n bg: [],\n fg: []\n };\n };\n\n Slicer.prototype._sliceInteraction = function (interaction, eventUiBases, dateProfile, nextDayThreshold) {\n var extraArgs = [];\n\n for (var _i = 4; _i < arguments.length; _i++) {\n extraArgs[_i - 4] = arguments[_i];\n }\n\n if (!interaction) {\n return null;\n }\n\n var rangeRes = sliceEventStore(interaction.mutatedEvents, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);\n return {\n segs: this.sliceEventRanges(rangeRes.fg, extraArgs),\n affectedInstances: interaction.affectedEvents.instances,\n isEvent: interaction.isEvent\n };\n };\n\n Slicer.prototype._sliceDateSpan = function (dateSpan, eventUiBases, context) {\n var extraArgs = [];\n\n for (var _i = 3; _i < arguments.length; _i++) {\n extraArgs[_i - 3] = arguments[_i];\n }\n\n if (!dateSpan) {\n return [];\n }\n\n var eventRange = fabricateEventRange(dateSpan, eventUiBases, context);\n var segs = this.sliceRange.apply(this, __spreadArray([dateSpan.range], extraArgs));\n\n for (var _a = 0, segs_1 = segs; _a < segs_1.length; _a++) {\n var seg = segs_1[_a];\n seg.eventRange = eventRange;\n }\n\n return segs;\n };\n /*\n \"complete\" seg means it has component and eventRange\n */\n\n\n Slicer.prototype.sliceEventRanges = function (eventRanges, extraArgs) {\n var segs = [];\n\n for (var _i = 0, eventRanges_1 = eventRanges; _i < eventRanges_1.length; _i++) {\n var eventRange = eventRanges_1[_i];\n segs.push.apply(segs, this.sliceEventRange(eventRange, extraArgs));\n }\n\n return segs;\n };\n /*\n \"complete\" seg means it has component and eventRange\n */\n\n\n Slicer.prototype.sliceEventRange = function (eventRange, extraArgs) {\n var dateRange = eventRange.range; // hack to make multi-day events that are being force-displayed as list-items to take up only one day\n\n if (this.forceDayIfListItem && eventRange.ui.display === 'list-item') {\n dateRange = {\n start: dateRange.start,\n end: addDays(dateRange.start, 1)\n };\n }\n\n var segs = this.sliceRange.apply(this, __spreadArray([dateRange], extraArgs));\n\n for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) {\n var seg = segs_2[_i];\n seg.eventRange = eventRange;\n seg.isStart = eventRange.isStart && seg.isStart;\n seg.isEnd = eventRange.isEnd && seg.isEnd;\n }\n\n return segs;\n };\n\n return Slicer;\n}();\n/*\nfor incorporating slotMinTime/slotMaxTime if appropriate\nTODO: should be part of DateProfile!\nTimelineDateProfile already does this btw\n*/\n\n\nfunction computeActiveRange(dateProfile, isComponentAllDay) {\n var range = dateProfile.activeRange;\n\n if (isComponentAllDay) {\n return range;\n }\n\n return {\n start: addMs(range.start, dateProfile.slotMinTime.milliseconds),\n end: addMs(range.end, dateProfile.slotMaxTime.milliseconds - 864e5) // 864e5 = ms in a day\n\n };\n} // high-level segmenting-aware tester functions\n// ------------------------------------------------------------------------------------------------------------------------\n\n\nfunction isInteractionValid(interaction, dateProfile, context) {\n var instances = interaction.mutatedEvents.instances;\n\n for (var instanceId in instances) {\n if (!rangeContainsRange(dateProfile.validRange, instances[instanceId].range)) {\n return false;\n }\n }\n\n return isNewPropsValid({\n eventDrag: interaction\n }, context); // HACK: the eventDrag props is used for ALL interactions\n}\n\nfunction isDateSelectionValid(dateSelection, dateProfile, context) {\n if (!rangeContainsRange(dateProfile.validRange, dateSelection.range)) {\n return false;\n }\n\n return isNewPropsValid({\n dateSelection: dateSelection\n }, context);\n}\n\nfunction isNewPropsValid(newProps, context) {\n var calendarState = context.getCurrentData();\n\n var props = __assign({\n businessHours: calendarState.businessHours,\n dateSelection: '',\n eventStore: calendarState.eventStore,\n eventUiBases: calendarState.eventUiBases,\n eventSelection: '',\n eventDrag: null,\n eventResize: null\n }, newProps);\n\n return (context.pluginHooks.isPropsValid || isPropsValid)(props, context);\n}\n\nfunction isPropsValid(state, context, dateSpanMeta, filterConfig) {\n if (dateSpanMeta === void 0) {\n dateSpanMeta = {};\n }\n\n if (state.eventDrag && !isInteractionPropsValid(state, context, dateSpanMeta, filterConfig)) {\n return false;\n }\n\n if (state.dateSelection && !isDateSelectionPropsValid(state, context, dateSpanMeta, filterConfig)) {\n return false;\n }\n\n return true;\n} // Moving Event Validation\n// ------------------------------------------------------------------------------------------------------------------------\n\n\nfunction isInteractionPropsValid(state, context, dateSpanMeta, filterConfig) {\n var currentState = context.getCurrentData();\n var interaction = state.eventDrag; // HACK: the eventDrag props is used for ALL interactions\n\n var subjectEventStore = interaction.mutatedEvents;\n var subjectDefs = subjectEventStore.defs;\n var subjectInstances = subjectEventStore.instances;\n var subjectConfigs = compileEventUis(subjectDefs, interaction.isEvent ? state.eventUiBases : {\n '': currentState.selectionConfig\n });\n\n if (filterConfig) {\n subjectConfigs = mapHash(subjectConfigs, filterConfig);\n } // exclude the subject events. TODO: exclude defs too?\n\n\n var otherEventStore = excludeInstances(state.eventStore, interaction.affectedEvents.instances);\n var otherDefs = otherEventStore.defs;\n var otherInstances = otherEventStore.instances;\n var otherConfigs = compileEventUis(otherDefs, state.eventUiBases);\n\n for (var subjectInstanceId in subjectInstances) {\n var subjectInstance = subjectInstances[subjectInstanceId];\n var subjectRange = subjectInstance.range;\n var subjectConfig = subjectConfigs[subjectInstance.defId];\n var subjectDef = subjectDefs[subjectInstance.defId]; // constraint\n\n if (!allConstraintsPass(subjectConfig.constraints, subjectRange, otherEventStore, state.businessHours, context)) {\n return false;\n } // overlap\n\n\n var eventOverlap = context.options.eventOverlap;\n var eventOverlapFunc = typeof eventOverlap === 'function' ? eventOverlap : null;\n\n for (var otherInstanceId in otherInstances) {\n var otherInstance = otherInstances[otherInstanceId]; // intersect! evaluate\n\n if (rangesIntersect(subjectRange, otherInstance.range)) {\n var otherOverlap = otherConfigs[otherInstance.defId].overlap; // consider the other event's overlap. only do this if the subject event is a \"real\" event\n\n if (otherOverlap === false && interaction.isEvent) {\n return false;\n }\n\n if (subjectConfig.overlap === false) {\n return false;\n }\n\n if (eventOverlapFunc && !eventOverlapFunc(new EventApi(context, otherDefs[otherInstance.defId], otherInstance), // still event\n new EventApi(context, subjectDef, subjectInstance))) {\n return false;\n }\n }\n } // allow (a function)\n\n\n var calendarEventStore = currentState.eventStore; // need global-to-calendar, not local to component (splittable)state\n\n for (var _i = 0, _a = subjectConfig.allows; _i < _a.length; _i++) {\n var subjectAllow = _a[_i];\n\n var subjectDateSpan = __assign(__assign({}, dateSpanMeta), {\n range: subjectInstance.range,\n allDay: subjectDef.allDay\n });\n\n var origDef = calendarEventStore.defs[subjectDef.defId];\n var origInstance = calendarEventStore.instances[subjectInstanceId];\n var eventApi = void 0;\n\n if (origDef) {\n // was previously in the calendar\n eventApi = new EventApi(context, origDef, origInstance);\n } else {\n // was an external event\n eventApi = new EventApi(context, subjectDef); // no instance, because had no dates\n }\n\n if (!subjectAllow(buildDateSpanApiWithContext(subjectDateSpan, context), eventApi)) {\n return false;\n }\n }\n }\n\n return true;\n} // Date Selection Validation\n// ------------------------------------------------------------------------------------------------------------------------\n\n\nfunction isDateSelectionPropsValid(state, context, dateSpanMeta, filterConfig) {\n var relevantEventStore = state.eventStore;\n var relevantDefs = relevantEventStore.defs;\n var relevantInstances = relevantEventStore.instances;\n var selection = state.dateSelection;\n var selectionRange = selection.range;\n var selectionConfig = context.getCurrentData().selectionConfig;\n\n if (filterConfig) {\n selectionConfig = filterConfig(selectionConfig);\n } // constraint\n\n\n if (!allConstraintsPass(selectionConfig.constraints, selectionRange, relevantEventStore, state.businessHours, context)) {\n return false;\n } // overlap\n\n\n var selectOverlap = context.options.selectOverlap;\n var selectOverlapFunc = typeof selectOverlap === 'function' ? selectOverlap : null;\n\n for (var relevantInstanceId in relevantInstances) {\n var relevantInstance = relevantInstances[relevantInstanceId]; // intersect! evaluate\n\n if (rangesIntersect(selectionRange, relevantInstance.range)) {\n if (selectionConfig.overlap === false) {\n return false;\n }\n\n if (selectOverlapFunc && !selectOverlapFunc(new EventApi(context, relevantDefs[relevantInstance.defId], relevantInstance), null)) {\n return false;\n }\n }\n } // allow (a function)\n\n\n for (var _i = 0, _a = selectionConfig.allows; _i < _a.length; _i++) {\n var selectionAllow = _a[_i];\n\n var fullDateSpan = __assign(__assign({}, dateSpanMeta), selection);\n\n if (!selectionAllow(buildDateSpanApiWithContext(fullDateSpan, context), null)) {\n return false;\n }\n }\n\n return true;\n} // Constraint Utils\n// ------------------------------------------------------------------------------------------------------------------------\n\n\nfunction allConstraintsPass(constraints, subjectRange, otherEventStore, businessHoursUnexpanded, context) {\n for (var _i = 0, constraints_1 = constraints; _i < constraints_1.length; _i++) {\n var constraint = constraints_1[_i];\n\n if (!anyRangesContainRange(constraintToRanges(constraint, subjectRange, otherEventStore, businessHoursUnexpanded, context), subjectRange)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction constraintToRanges(constraint, subjectRange, // for expanding a recurring constraint, or expanding business hours\notherEventStore, // for if constraint is an even group ID\nbusinessHoursUnexpanded, // for if constraint is 'businessHours'\ncontext) {\n if (constraint === 'businessHours') {\n return eventStoreToRanges(expandRecurring(businessHoursUnexpanded, subjectRange, context));\n }\n\n if (typeof constraint === 'string') {\n // an group ID\n return eventStoreToRanges(filterEventStoreDefs(otherEventStore, function (eventDef) {\n return eventDef.groupId === constraint;\n }));\n }\n\n if (_typeof(constraint) === 'object' && constraint) {\n // non-null object\n return eventStoreToRanges(expandRecurring(constraint, subjectRange, context));\n }\n\n return []; // if it's false\n} // TODO: move to event-store file?\n\n\nfunction eventStoreToRanges(eventStore) {\n var instances = eventStore.instances;\n var ranges = [];\n\n for (var instanceId in instances) {\n ranges.push(instances[instanceId].range);\n }\n\n return ranges;\n} // TODO: move to geom file?\n\n\nfunction anyRangesContainRange(outerRanges, innerRange) {\n for (var _i = 0, outerRanges_1 = outerRanges; _i < outerRanges_1.length; _i++) {\n var outerRange = outerRanges_1[_i];\n\n if (rangeContainsRange(outerRange, innerRange)) {\n return true;\n }\n }\n\n return false;\n}\n\nvar VISIBLE_HIDDEN_RE = /^(visible|hidden)$/;\n\nvar Scroller =\n/** @class */\nfunction (_super) {\n __extends(Scroller, _super);\n\n function Scroller() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.handleEl = function (el) {\n _this.el = el;\n setRef(_this.props.elRef, el);\n };\n\n return _this;\n }\n\n Scroller.prototype.render = function () {\n var props = this.props;\n var liquid = props.liquid,\n liquidIsAbsolute = props.liquidIsAbsolute;\n var isAbsolute = liquid && liquidIsAbsolute;\n var className = ['fc-scroller'];\n\n if (liquid) {\n if (liquidIsAbsolute) {\n className.push('fc-scroller-liquid-absolute');\n } else {\n className.push('fc-scroller-liquid');\n }\n }\n\n return createElement(\"div\", {\n ref: this.handleEl,\n className: className.join(' '),\n style: {\n overflowX: props.overflowX,\n overflowY: props.overflowY,\n left: isAbsolute && -(props.overcomeLeft || 0) || '',\n right: isAbsolute && -(props.overcomeRight || 0) || '',\n bottom: isAbsolute && -(props.overcomeBottom || 0) || '',\n marginLeft: !isAbsolute && -(props.overcomeLeft || 0) || '',\n marginRight: !isAbsolute && -(props.overcomeRight || 0) || '',\n marginBottom: !isAbsolute && -(props.overcomeBottom || 0) || '',\n maxHeight: props.maxHeight || ''\n }\n }, props.children);\n };\n\n Scroller.prototype.needsXScrolling = function () {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowX)) {\n return false;\n } // testing scrollWidth>clientWidth is unreliable cross-browser when pixel heights aren't integers.\n // much more reliable to see if children are taller than the scroller, even tho doesn't account for\n // inner-child margins and absolute positioning\n\n\n var el = this.el;\n var realClientWidth = this.el.getBoundingClientRect().width - this.getYScrollbarWidth();\n var children = el.children;\n\n for (var i = 0; i < children.length; i += 1) {\n var childEl = children[i];\n\n if (childEl.getBoundingClientRect().width > realClientWidth) {\n return true;\n }\n }\n\n return false;\n };\n\n Scroller.prototype.needsYScrolling = function () {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowY)) {\n return false;\n } // testing scrollHeight>clientHeight is unreliable cross-browser when pixel heights aren't integers.\n // much more reliable to see if children are taller than the scroller, even tho doesn't account for\n // inner-child margins and absolute positioning\n\n\n var el = this.el;\n var realClientHeight = this.el.getBoundingClientRect().height - this.getXScrollbarWidth();\n var children = el.children;\n\n for (var i = 0; i < children.length; i += 1) {\n var childEl = children[i];\n\n if (childEl.getBoundingClientRect().height > realClientHeight) {\n return true;\n }\n }\n\n return false;\n };\n\n Scroller.prototype.getXScrollbarWidth = function () {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowX)) {\n return 0;\n }\n\n return this.el.offsetHeight - this.el.clientHeight; // only works because we guarantee no borders. TODO: add to CSS with important?\n };\n\n Scroller.prototype.getYScrollbarWidth = function () {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowY)) {\n return 0;\n }\n\n return this.el.offsetWidth - this.el.clientWidth; // only works because we guarantee no borders. TODO: add to CSS with important?\n };\n\n return Scroller;\n}(BaseComponent);\n/*\nTODO: somehow infer OtherArgs from masterCallback?\nTODO: infer RefType from masterCallback if provided\n*/\n\n\nvar RefMap =\n/** @class */\nfunction () {\n function RefMap(masterCallback) {\n var _this = this;\n\n this.masterCallback = masterCallback;\n this.currentMap = {};\n this.depths = {};\n this.callbackMap = {};\n\n this.handleValue = function (val, key) {\n var _a = _this,\n depths = _a.depths,\n currentMap = _a.currentMap;\n var removed = false;\n var added = false;\n\n if (val !== null) {\n // for bug... ACTUALLY: can probably do away with this now that callers don't share numeric indices anymore\n removed = key in currentMap;\n currentMap[key] = val;\n depths[key] = (depths[key] || 0) + 1;\n added = true;\n } else {\n depths[key] -= 1;\n\n if (!depths[key]) {\n delete currentMap[key];\n delete _this.callbackMap[key];\n removed = true;\n }\n }\n\n if (_this.masterCallback) {\n if (removed) {\n _this.masterCallback(null, String(key));\n }\n\n if (added) {\n _this.masterCallback(val, String(key));\n }\n }\n };\n }\n\n RefMap.prototype.createRef = function (key) {\n var _this = this;\n\n var refCallback = this.callbackMap[key];\n\n if (!refCallback) {\n refCallback = this.callbackMap[key] = function (val) {\n _this.handleValue(val, String(key));\n };\n }\n\n return refCallback;\n }; // TODO: check callers that don't care about order. should use getAll instead\n // NOTE: this method has become less valuable now that we are encouraged to map order by some other index\n // TODO: provide ONE array-export function, buildArray, which fails on non-numeric indexes. caller can manipulate and \"collect\"\n\n\n RefMap.prototype.collect = function (startIndex, endIndex, step) {\n return collectFromHash(this.currentMap, startIndex, endIndex, step);\n };\n\n RefMap.prototype.getAll = function () {\n return hashValuesToArray(this.currentMap);\n };\n\n return RefMap;\n}();\n\nfunction computeShrinkWidth(chunkEls) {\n var shrinkCells = findElements(chunkEls, '.fc-scrollgrid-shrink');\n var largestWidth = 0;\n\n for (var _i = 0, shrinkCells_1 = shrinkCells; _i < shrinkCells_1.length; _i++) {\n var shrinkCell = shrinkCells_1[_i];\n largestWidth = Math.max(largestWidth, computeSmallestCellWidth(shrinkCell));\n }\n\n return Math.ceil(largestWidth); // elements work best with integers. round up to ensure contents fits\n}\n\nfunction getSectionHasLiquidHeight(props, sectionConfig) {\n return props.liquid && sectionConfig.liquid; // does the section do liquid-height? (need to have whole scrollgrid liquid-height as well)\n}\n\nfunction getAllowYScrolling(props, sectionConfig) {\n return sectionConfig.maxHeight != null || // if its possible for the height to max out, we might need scrollbars\n getSectionHasLiquidHeight(props, sectionConfig); // if the section is liquid height, it might condense enough to require scrollbars\n} // TODO: ONLY use `arg`. force out internal function to use same API\n\n\nfunction renderChunkContent(sectionConfig, chunkConfig, arg, isHeader) {\n var expandRows = arg.expandRows;\n var content = typeof chunkConfig.content === 'function' ? chunkConfig.content(arg) : createElement('table', {\n role: 'presentation',\n className: [chunkConfig.tableClassName, sectionConfig.syncRowHeights ? 'fc-scrollgrid-sync-table' : ''].join(' '),\n style: {\n minWidth: arg.tableMinWidth,\n width: arg.clientWidth,\n height: expandRows ? arg.clientHeight : '' // css `height` on a
serves as a min-height\n\n }\n }, arg.tableColGroupNode, createElement(isHeader ? 'thead' : 'tbody', {\n role: 'presentation'\n }, typeof chunkConfig.rowContent === 'function' ? chunkConfig.rowContent(arg) : chunkConfig.rowContent));\n return content;\n}\n\nfunction isColPropsEqual(cols0, cols1) {\n return isArraysEqual(cols0, cols1, isPropsEqual);\n}\n\nfunction renderMicroColGroup(cols, shrinkWidth) {\n var colNodes = [];\n /*\n for ColProps with spans, it would have been great to make a single \n HOWEVER, Chrome was getting messing up distributing the width to elements makes Chrome behave.\n */\n\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var colProps = cols_1[_i];\n var span = colProps.span || 1;\n\n for (var i = 0; i < span; i += 1) {\n colNodes.push(createElement(\"col\", {\n style: {\n width: colProps.width === 'shrink' ? sanitizeShrinkWidth(shrinkWidth) : colProps.width || '',\n minWidth: colProps.minWidth || ''\n }\n }));\n }\n }\n\n return createElement.apply(void 0, __spreadArray(['colgroup', {}], colNodes));\n}\n\nfunction sanitizeShrinkWidth(shrinkWidth) {\n /* why 4? if we do 0, it will kill any border, which are needed for computeSmallestCellWidth\n 4 accounts for 2 2-pixel borders. TODO: better solution? */\n return shrinkWidth == null ? 4 : shrinkWidth;\n}\n\nfunction hasShrinkWidth(cols) {\n for (var _i = 0, cols_2 = cols; _i < cols_2.length; _i++) {\n var col = cols_2[_i];\n\n if (col.width === 'shrink') {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getScrollGridClassNames(liquid, context) {\n var classNames = ['fc-scrollgrid', context.theme.getClass('table')];\n\n if (liquid) {\n classNames.push('fc-scrollgrid-liquid');\n }\n\n return classNames;\n}\n\nfunction getSectionClassNames(sectionConfig, wholeTableVGrow) {\n var classNames = ['fc-scrollgrid-section', \"fc-scrollgrid-section-\" + sectionConfig.type, sectionConfig.className // used?\n ];\n\n if (wholeTableVGrow && sectionConfig.liquid && sectionConfig.maxHeight == null) {\n classNames.push('fc-scrollgrid-section-liquid');\n }\n\n if (sectionConfig.isSticky) {\n classNames.push('fc-scrollgrid-section-sticky');\n }\n\n return classNames;\n}\n\nfunction renderScrollShim(arg) {\n return createElement(\"div\", {\n className: \"fc-scrollgrid-sticky-shim\",\n style: {\n width: arg.clientWidth,\n minWidth: arg.tableMinWidth\n }\n });\n}\n\nfunction getStickyHeaderDates(options) {\n var stickyHeaderDates = options.stickyHeaderDates;\n\n if (stickyHeaderDates == null || stickyHeaderDates === 'auto') {\n stickyHeaderDates = options.height === 'auto' || options.viewHeight === 'auto';\n }\n\n return stickyHeaderDates;\n}\n\nfunction getStickyFooterScrollbar(options) {\n var stickyFooterScrollbar = options.stickyFooterScrollbar;\n\n if (stickyFooterScrollbar == null || stickyFooterScrollbar === 'auto') {\n stickyFooterScrollbar = options.height === 'auto' || options.viewHeight === 'auto';\n }\n\n return stickyFooterScrollbar;\n}\n\nvar SimpleScrollGrid =\n/** @class */\nfunction (_super) {\n __extends(SimpleScrollGrid, _super);\n\n function SimpleScrollGrid() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.processCols = memoize(function (a) {\n return a;\n }, isColPropsEqual); // so we get same `cols` props every time\n // yucky to memoize VNodes, but much more efficient for consumers\n\n _this.renderMicroColGroup = memoize(renderMicroColGroup);\n _this.scrollerRefs = new RefMap();\n _this.scrollerElRefs = new RefMap(_this._handleScrollerEl.bind(_this));\n _this.state = {\n shrinkWidth: null,\n forceYScrollbars: false,\n scrollerClientWidths: {},\n scrollerClientHeights: {}\n }; // TODO: can do a really simple print-view. dont need to join rows\n\n _this.handleSizing = function () {\n _this.setState(__assign({\n shrinkWidth: _this.computeShrinkWidth()\n }, _this.computeScrollerDims()));\n };\n\n return _this;\n }\n\n SimpleScrollGrid.prototype.render = function () {\n var _a = this,\n props = _a.props,\n state = _a.state,\n context = _a.context;\n\n var sectionConfigs = props.sections || [];\n var cols = this.processCols(props.cols);\n var microColGroupNode = this.renderMicroColGroup(cols, state.shrinkWidth);\n var classNames = getScrollGridClassNames(props.liquid, context);\n\n if (props.collapsibleWidth) {\n classNames.push('fc-scrollgrid-collapsible');\n } // TODO: make DRY\n\n\n var configCnt = sectionConfigs.length;\n var configI = 0;\n var currentConfig;\n var headSectionNodes = [];\n var bodySectionNodes = [];\n var footSectionNodes = [];\n\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'header') {\n headSectionNodes.push(this.renderSection(currentConfig, microColGroupNode, true));\n configI += 1;\n }\n\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') {\n bodySectionNodes.push(this.renderSection(currentConfig, microColGroupNode, false));\n configI += 1;\n }\n\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') {\n footSectionNodes.push(this.renderSection(currentConfig, microColGroupNode, true));\n configI += 1;\n } // firefox bug: when setting height on table and there is a thead or tfoot,\n // the necessary height:100% on the liquid-height body section forces the *whole* table to be taller. (bug #5524)\n // use getCanVGrowWithinCell as a way to detect table-stupid firefox.\n // if so, use a simpler dom structure, jam everything into a lone tbody.\n\n\n var isBuggy = !getCanVGrowWithinCell();\n var roleAttrs = {\n role: 'rowgroup'\n };\n return createElement('table', {\n role: 'grid',\n className: classNames.join(' '),\n style: {\n height: props.height\n }\n }, Boolean(!isBuggy && headSectionNodes.length) && createElement.apply(void 0, __spreadArray(['thead', roleAttrs], headSectionNodes)), Boolean(!isBuggy && bodySectionNodes.length) && createElement.apply(void 0, __spreadArray(['tbody', roleAttrs], bodySectionNodes)), Boolean(!isBuggy && footSectionNodes.length) && createElement.apply(void 0, __spreadArray(['tfoot', roleAttrs], footSectionNodes)), isBuggy && createElement.apply(void 0, __spreadArray(__spreadArray(__spreadArray(['tbody', roleAttrs], headSectionNodes), bodySectionNodes), footSectionNodes)));\n };\n\n SimpleScrollGrid.prototype.renderSection = function (sectionConfig, microColGroupNode, isHeader) {\n if ('outerContent' in sectionConfig) {\n return createElement(Fragment, {\n key: sectionConfig.key\n }, sectionConfig.outerContent);\n }\n\n return createElement(\"tr\", {\n key: sectionConfig.key,\n role: \"presentation\",\n className: getSectionClassNames(sectionConfig, this.props.liquid).join(' ')\n }, this.renderChunkTd(sectionConfig, microColGroupNode, sectionConfig.chunk, isHeader));\n };\n\n SimpleScrollGrid.prototype.renderChunkTd = function (sectionConfig, microColGroupNode, chunkConfig, isHeader) {\n if ('outerContent' in chunkConfig) {\n return chunkConfig.outerContent;\n }\n\n var props = this.props;\n var _a = this.state,\n forceYScrollbars = _a.forceYScrollbars,\n scrollerClientWidths = _a.scrollerClientWidths,\n scrollerClientHeights = _a.scrollerClientHeights;\n var needsYScrolling = getAllowYScrolling(props, sectionConfig); // TODO: do lazily. do in section config?\n\n var isLiquid = getSectionHasLiquidHeight(props, sectionConfig); // for `!props.liquid` - is WHOLE scrollgrid natural height?\n // TODO: do same thing in advanced scrollgrid? prolly not b/c always has horizontal scrollbars\n\n var overflowY = !props.liquid ? 'visible' : forceYScrollbars ? 'scroll' : !needsYScrolling ? 'hidden' : 'auto';\n var sectionKey = sectionConfig.key;\n var content = renderChunkContent(sectionConfig, chunkConfig, {\n tableColGroupNode: microColGroupNode,\n tableMinWidth: '',\n clientWidth: !props.collapsibleWidth && scrollerClientWidths[sectionKey] !== undefined ? scrollerClientWidths[sectionKey] : null,\n clientHeight: scrollerClientHeights[sectionKey] !== undefined ? scrollerClientHeights[sectionKey] : null,\n expandRows: sectionConfig.expandRows,\n syncRowHeights: false,\n rowSyncHeights: [],\n reportRowHeightChange: function reportRowHeightChange() {}\n }, isHeader);\n return createElement(isHeader ? 'th' : 'td', {\n ref: chunkConfig.elRef,\n role: 'presentation'\n }, createElement(\"div\", {\n className: \"fc-scroller-harness\" + (isLiquid ? ' fc-scroller-harness-liquid' : '')\n }, createElement(Scroller, {\n ref: this.scrollerRefs.createRef(sectionKey),\n elRef: this.scrollerElRefs.createRef(sectionKey),\n overflowY: overflowY,\n overflowX: !props.liquid ? 'visible' : 'hidden'\n /* natural height? */\n ,\n maxHeight: sectionConfig.maxHeight,\n liquid: isLiquid,\n liquidIsAbsolute // because its within a harness\n : true\n }, content)));\n };\n\n SimpleScrollGrid.prototype._handleScrollerEl = function (scrollerEl, key) {\n var section = getSectionByKey(this.props.sections, key);\n\n if (section) {\n setRef(section.chunk.scrollerElRef, scrollerEl);\n }\n };\n\n SimpleScrollGrid.prototype.componentDidMount = function () {\n this.handleSizing();\n this.context.addResizeHandler(this.handleSizing);\n };\n\n SimpleScrollGrid.prototype.componentDidUpdate = function () {\n // TODO: need better solution when state contains non-sizing things\n this.handleSizing();\n };\n\n SimpleScrollGrid.prototype.componentWillUnmount = function () {\n this.context.removeResizeHandler(this.handleSizing);\n };\n\n SimpleScrollGrid.prototype.computeShrinkWidth = function () {\n return hasShrinkWidth(this.props.cols) ? computeShrinkWidth(this.scrollerElRefs.getAll()) : 0;\n };\n\n SimpleScrollGrid.prototype.computeScrollerDims = function () {\n var scrollbarWidth = getScrollbarWidths();\n\n var _a = this,\n scrollerRefs = _a.scrollerRefs,\n scrollerElRefs = _a.scrollerElRefs;\n\n var forceYScrollbars = false;\n var scrollerClientWidths = {};\n var scrollerClientHeights = {};\n\n for (var sectionKey in scrollerRefs.currentMap) {\n var scroller = scrollerRefs.currentMap[sectionKey];\n\n if (scroller && scroller.needsYScrolling()) {\n forceYScrollbars = true;\n break;\n }\n }\n\n for (var _i = 0, _b = this.props.sections; _i < _b.length; _i++) {\n var section = _b[_i];\n var sectionKey = section.key;\n var scrollerEl = scrollerElRefs.currentMap[sectionKey];\n\n if (scrollerEl) {\n var harnessEl = scrollerEl.parentNode; // TODO: weird way to get this. need harness b/c doesn't include table borders\n\n scrollerClientWidths[sectionKey] = Math.floor(harnessEl.getBoundingClientRect().width - (forceYScrollbars ? scrollbarWidth.y // use global because scroller might not have scrollbars yet but will need them in future\n : 0));\n scrollerClientHeights[sectionKey] = Math.floor(harnessEl.getBoundingClientRect().height);\n }\n }\n\n return {\n forceYScrollbars: forceYScrollbars,\n scrollerClientWidths: scrollerClientWidths,\n scrollerClientHeights: scrollerClientHeights\n };\n };\n\n return SimpleScrollGrid;\n}(BaseComponent);\n\nSimpleScrollGrid.addStateEquality({\n scrollerClientWidths: isPropsEqual,\n scrollerClientHeights: isPropsEqual\n});\n\nfunction getSectionByKey(sections, key) {\n for (var _i = 0, sections_1 = sections; _i < sections_1.length; _i++) {\n var section = sections_1[_i];\n\n if (section.key === key) {\n return section;\n }\n }\n\n return null;\n}\n\nvar EventRoot =\n/** @class */\nfunction (_super) {\n __extends(EventRoot, _super);\n\n function EventRoot() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.elRef = createRef();\n return _this;\n }\n\n EventRoot.prototype.render = function () {\n var _a = this,\n props = _a.props,\n context = _a.context;\n\n var options = context.options;\n var seg = props.seg;\n var eventRange = seg.eventRange;\n var ui = eventRange.ui;\n var hookProps = {\n event: new EventApi(context, eventRange.def, eventRange.instance),\n view: context.viewApi,\n timeText: props.timeText,\n textColor: ui.textColor,\n backgroundColor: ui.backgroundColor,\n borderColor: ui.borderColor,\n isDraggable: !props.disableDragging && computeSegDraggable(seg, context),\n isStartResizable: !props.disableResizing && computeSegStartResizable(seg, context),\n isEndResizable: !props.disableResizing && computeSegEndResizable(seg),\n isMirror: Boolean(props.isDragging || props.isResizing || props.isDateSelecting),\n isStart: Boolean(seg.isStart),\n isEnd: Boolean(seg.isEnd),\n isPast: Boolean(props.isPast),\n isFuture: Boolean(props.isFuture),\n isToday: Boolean(props.isToday),\n isSelected: Boolean(props.isSelected),\n isDragging: Boolean(props.isDragging),\n isResizing: Boolean(props.isResizing)\n };\n var standardClassNames = getEventClassNames(hookProps).concat(ui.classNames);\n return createElement(RenderHook, {\n hookProps: hookProps,\n classNames: options.eventClassNames,\n content: options.eventContent,\n defaultContent: props.defaultContent,\n didMount: options.eventDidMount,\n willUnmount: options.eventWillUnmount,\n elRef: this.elRef\n }, function (rootElRef, customClassNames, innerElRef, innerContent) {\n return props.children(rootElRef, standardClassNames.concat(customClassNames), innerElRef, innerContent, hookProps);\n });\n };\n\n EventRoot.prototype.componentDidMount = function () {\n setElSeg(this.elRef.current, this.props.seg);\n };\n /*\n need to re-assign seg to the element if seg changes, even if the element is the same\n */\n\n\n EventRoot.prototype.componentDidUpdate = function (prevProps) {\n var seg = this.props.seg;\n\n if (seg !== prevProps.seg) {\n setElSeg(this.elRef.current, seg);\n }\n };\n\n return EventRoot;\n}(BaseComponent); // should not be a purecomponent\n\n\nvar StandardEvent =\n/** @class */\nfunction (_super) {\n __extends(StandardEvent, _super);\n\n function StandardEvent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n StandardEvent.prototype.render = function () {\n var _a = this,\n props = _a.props,\n context = _a.context;\n\n var seg = props.seg;\n var timeFormat = context.options.eventTimeFormat || props.defaultTimeFormat;\n var timeText = buildSegTimeText(seg, timeFormat, context, props.defaultDisplayEventTime, props.defaultDisplayEventEnd);\n return createElement(EventRoot, {\n seg: seg,\n timeText: timeText,\n disableDragging: props.disableDragging,\n disableResizing: props.disableResizing,\n defaultContent: props.defaultContent || renderInnerContent$1,\n isDragging: props.isDragging,\n isResizing: props.isResizing,\n isDateSelecting: props.isDateSelecting,\n isSelected: props.isSelected,\n isPast: props.isPast,\n isFuture: props.isFuture,\n isToday: props.isToday\n }, function (rootElRef, classNames, innerElRef, innerContent, hookProps) {\n return createElement(\"a\", __assign({\n className: props.extraClassNames.concat(classNames).join(' '),\n style: {\n borderColor: hookProps.borderColor,\n backgroundColor: hookProps.backgroundColor\n },\n ref: rootElRef\n }, getSegAnchorAttrs(seg, context)), createElement(\"div\", {\n className: \"fc-event-main\",\n ref: innerElRef,\n style: {\n color: hookProps.textColor\n }\n }, innerContent), hookProps.isStartResizable && createElement(\"div\", {\n className: \"fc-event-resizer fc-event-resizer-start\"\n }), hookProps.isEndResizable && createElement(\"div\", {\n className: \"fc-event-resizer fc-event-resizer-end\"\n }));\n });\n };\n\n return StandardEvent;\n}(BaseComponent);\n\nfunction renderInnerContent$1(innerProps) {\n return createElement(\"div\", {\n className: \"fc-event-main-frame\"\n }, innerProps.timeText && createElement(\"div\", {\n className: \"fc-event-time\"\n }, innerProps.timeText), createElement(\"div\", {\n className: \"fc-event-title-container\"\n }, createElement(\"div\", {\n className: \"fc-event-title fc-sticky\"\n }, innerProps.event.title || createElement(Fragment, null, \"\\xA0\"))));\n}\n\nvar NowIndicatorRoot = function NowIndicatorRoot(props) {\n return createElement(ViewContextType.Consumer, null, function (context) {\n var options = context.options;\n var hookProps = {\n isAxis: props.isAxis,\n date: context.dateEnv.toDate(props.date),\n view: context.viewApi\n };\n return createElement(RenderHook, {\n hookProps: hookProps,\n classNames: options.nowIndicatorClassNames,\n content: options.nowIndicatorContent,\n didMount: options.nowIndicatorDidMount,\n willUnmount: options.nowIndicatorWillUnmount\n }, props.children);\n });\n};\n\nvar DAY_NUM_FORMAT = createFormatter({\n day: 'numeric'\n});\n\nvar DayCellContent =\n/** @class */\nfunction (_super) {\n __extends(DayCellContent, _super);\n\n function DayCellContent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n DayCellContent.prototype.render = function () {\n var _a = this,\n props = _a.props,\n context = _a.context;\n\n var options = context.options;\n var hookProps = refineDayCellHookProps({\n date: props.date,\n dateProfile: props.dateProfile,\n todayRange: props.todayRange,\n showDayNumber: props.showDayNumber,\n extraProps: props.extraHookProps,\n viewApi: context.viewApi,\n dateEnv: context.dateEnv\n });\n return createElement(ContentHook, {\n hookProps: hookProps,\n content: options.dayCellContent,\n defaultContent: props.defaultContent\n }, props.children);\n };\n\n return DayCellContent;\n}(BaseComponent);\n\nfunction refineDayCellHookProps(raw) {\n var date = raw.date,\n dateEnv = raw.dateEnv;\n var dayMeta = getDateMeta(date, raw.todayRange, null, raw.dateProfile);\n return __assign(__assign(__assign({\n date: dateEnv.toDate(date),\n view: raw.viewApi\n }, dayMeta), {\n dayNumberText: raw.showDayNumber ? dateEnv.format(date, DAY_NUM_FORMAT) : ''\n }), raw.extraProps);\n}\n\nvar DayCellRoot =\n/** @class */\nfunction (_super) {\n __extends(DayCellRoot, _super);\n\n function DayCellRoot() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.refineHookProps = memoizeObjArg(refineDayCellHookProps);\n _this.normalizeClassNames = buildClassNameNormalizer();\n return _this;\n }\n\n DayCellRoot.prototype.render = function () {\n var _a = this,\n props = _a.props,\n context = _a.context;\n\n var options = context.options;\n var hookProps = this.refineHookProps({\n date: props.date,\n dateProfile: props.dateProfile,\n todayRange: props.todayRange,\n showDayNumber: props.showDayNumber,\n extraProps: props.extraHookProps,\n viewApi: context.viewApi,\n dateEnv: context.dateEnv\n });\n var classNames = getDayClassNames(hookProps, context.theme).concat(hookProps.isDisabled ? [] // don't use custom classNames if disabled\n : this.normalizeClassNames(options.dayCellClassNames, hookProps));\n var dataAttrs = hookProps.isDisabled ? {} : {\n 'data-date': formatDayString(props.date)\n };\n return createElement(MountHook, {\n hookProps: hookProps,\n didMount: options.dayCellDidMount,\n willUnmount: options.dayCellWillUnmount,\n elRef: props.elRef\n }, function (rootElRef) {\n return props.children(rootElRef, classNames, dataAttrs, hookProps.isDisabled);\n });\n };\n\n return DayCellRoot;\n}(BaseComponent);\n\nfunction renderFill(fillType) {\n return createElement(\"div\", {\n className: \"fc-\" + fillType\n });\n}\n\nvar BgEvent = function BgEvent(props) {\n return createElement(EventRoot, {\n defaultContent: renderInnerContent,\n seg: props.seg\n /* uselesss i think */\n ,\n timeText: \"\",\n disableDragging: true,\n disableResizing: true,\n isDragging: false,\n isResizing: false,\n isDateSelecting: false,\n isSelected: false,\n isPast: props.isPast,\n isFuture: props.isFuture,\n isToday: props.isToday\n }, function (rootElRef, classNames, innerElRef, innerContent, hookProps) {\n return createElement(\"div\", {\n ref: rootElRef,\n className: ['fc-bg-event'].concat(classNames).join(' '),\n style: {\n backgroundColor: hookProps.backgroundColor\n }\n }, innerContent);\n });\n};\n\nfunction renderInnerContent(props) {\n var title = props.event.title;\n return title && createElement(\"div\", {\n className: \"fc-event-title\"\n }, props.event.title);\n}\n\nvar WeekNumberRoot = function WeekNumberRoot(props) {\n return createElement(ViewContextType.Consumer, null, function (context) {\n var dateEnv = context.dateEnv,\n options = context.options;\n var date = props.date;\n var format = options.weekNumberFormat || props.defaultFormat;\n var num = dateEnv.computeWeekNumber(date); // TODO: somehow use for formatting as well?\n\n var text = dateEnv.format(date, format);\n var hookProps = {\n num: num,\n text: text,\n date: date\n };\n return createElement(RenderHook, {\n hookProps: hookProps,\n classNames: options.weekNumberClassNames,\n content: options.weekNumberContent,\n defaultContent: renderInner,\n didMount: options.weekNumberDidMount,\n willUnmount: options.weekNumberWillUnmount\n }, props.children);\n });\n};\n\nfunction renderInner(innerProps) {\n return innerProps.text;\n}\n\nvar PADDING_FROM_VIEWPORT = 10;\n\nvar Popover =\n/** @class */\nfunction (_super) {\n __extends(Popover, _super);\n\n function Popover() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.state = {\n titleId: getUniqueDomId()\n };\n\n _this.handleRootEl = function (el) {\n _this.rootEl = el;\n\n if (_this.props.elRef) {\n setRef(_this.props.elRef, el);\n }\n }; // Triggered when the user clicks *anywhere* in the document, for the autoHide feature\n\n\n _this.handleDocumentMouseDown = function (ev) {\n // only hide the popover if the click happened outside the popover\n var target = getEventTargetViaRoot(ev);\n\n if (!_this.rootEl.contains(target)) {\n _this.handleCloseClick();\n }\n };\n\n _this.handleDocumentKeyDown = function (ev) {\n if (ev.key === 'Escape') {\n _this.handleCloseClick();\n }\n };\n\n _this.handleCloseClick = function () {\n var onClose = _this.props.onClose;\n\n if (onClose) {\n onClose();\n }\n };\n\n return _this;\n }\n\n Popover.prototype.render = function () {\n var _a = this.context,\n theme = _a.theme,\n options = _a.options;\n\n var _b = this,\n props = _b.props,\n state = _b.state;\n\n var classNames = ['fc-popover', theme.getClass('popover')].concat(props.extraClassNames || []);\n return createPortal(createElement(\"div\", __assign({\n id: props.id,\n className: classNames.join(' '),\n \"aria-labelledby\": state.titleId\n }, props.extraAttrs, {\n ref: this.handleRootEl\n }), createElement(\"div\", {\n className: 'fc-popover-header ' + theme.getClass('popoverHeader')\n }, createElement(\"span\", {\n className: \"fc-popover-title\",\n id: state.titleId\n }, props.title), createElement(\"span\", {\n className: 'fc-popover-close ' + theme.getIconClass('close'),\n title: options.closeHint,\n onClick: this.handleCloseClick\n })), createElement(\"div\", {\n className: 'fc-popover-body ' + theme.getClass('popoverContent')\n }, props.children)), props.parentEl);\n };\n\n Popover.prototype.componentDidMount = function () {\n document.addEventListener('mousedown', this.handleDocumentMouseDown);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n this.updateSize();\n };\n\n Popover.prototype.componentWillUnmount = function () {\n document.removeEventListener('mousedown', this.handleDocumentMouseDown);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n };\n\n Popover.prototype.updateSize = function () {\n var isRtl = this.context.isRtl;\n var _a = this.props,\n alignmentEl = _a.alignmentEl,\n alignGridTop = _a.alignGridTop;\n var rootEl = this.rootEl;\n var alignmentRect = computeClippedClientRect(alignmentEl);\n\n if (alignmentRect) {\n var popoverDims = rootEl.getBoundingClientRect(); // position relative to viewport\n\n var popoverTop = alignGridTop ? elementClosest(alignmentEl, '.fc-scrollgrid').getBoundingClientRect().top : alignmentRect.top;\n var popoverLeft = isRtl ? alignmentRect.right - popoverDims.width : alignmentRect.left; // constrain\n\n popoverTop = Math.max(popoverTop, PADDING_FROM_VIEWPORT);\n popoverLeft = Math.min(popoverLeft, document.documentElement.clientWidth - PADDING_FROM_VIEWPORT - popoverDims.width);\n popoverLeft = Math.max(popoverLeft, PADDING_FROM_VIEWPORT);\n var origin_1 = rootEl.offsetParent.getBoundingClientRect();\n applyStyle(rootEl, {\n top: popoverTop - origin_1.top,\n left: popoverLeft - origin_1.left\n });\n }\n };\n\n return Popover;\n}(BaseComponent);\n\nvar MorePopover =\n/** @class */\nfunction (_super) {\n __extends(MorePopover, _super);\n\n function MorePopover() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.handleRootEl = function (rootEl) {\n _this.rootEl = rootEl;\n\n if (rootEl) {\n _this.context.registerInteractiveComponent(_this, {\n el: rootEl,\n useEventCenter: false\n });\n } else {\n _this.context.unregisterInteractiveComponent(_this);\n }\n };\n\n return _this;\n }\n\n MorePopover.prototype.render = function () {\n var _a = this.context,\n options = _a.options,\n dateEnv = _a.dateEnv;\n var props = this.props;\n var startDate = props.startDate,\n todayRange = props.todayRange,\n dateProfile = props.dateProfile;\n var title = dateEnv.format(startDate, options.dayPopoverFormat);\n return createElement(DayCellRoot, {\n date: startDate,\n dateProfile: dateProfile,\n todayRange: todayRange,\n elRef: this.handleRootEl\n }, function (rootElRef, dayClassNames, dataAttrs) {\n return createElement(Popover, {\n elRef: rootElRef,\n id: props.id,\n title: title,\n extraClassNames: ['fc-more-popover'].concat(dayClassNames),\n extraAttrs: dataAttrs\n /* TODO: make these time-based when not whole-day? */\n ,\n parentEl: props.parentEl,\n alignmentEl: props.alignmentEl,\n alignGridTop: props.alignGridTop,\n onClose: props.onClose\n }, createElement(DayCellContent, {\n date: startDate,\n dateProfile: dateProfile,\n todayRange: todayRange\n }, function (innerElRef, innerContent) {\n return innerContent && createElement(\"div\", {\n className: \"fc-more-popover-misc\",\n ref: innerElRef\n }, innerContent);\n }), props.children);\n });\n };\n\n MorePopover.prototype.queryHit = function (positionLeft, positionTop, elWidth, elHeight) {\n var _a = this,\n rootEl = _a.rootEl,\n props = _a.props;\n\n if (positionLeft >= 0 && positionLeft < elWidth && positionTop >= 0 && positionTop < elHeight) {\n return {\n dateProfile: props.dateProfile,\n dateSpan: __assign({\n allDay: true,\n range: {\n start: props.startDate,\n end: props.endDate\n }\n }, props.extraDateSpan),\n dayEl: rootEl,\n rect: {\n left: 0,\n top: 0,\n right: elWidth,\n bottom: elHeight\n },\n layer: 1 // important when comparing with hits from other components\n\n };\n }\n\n return null;\n };\n\n return MorePopover;\n}(DateComponent);\n\nvar MoreLinkRoot =\n/** @class */\nfunction (_super) {\n __extends(MoreLinkRoot, _super);\n\n function MoreLinkRoot() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.linkElRef = createRef();\n _this.state = {\n isPopoverOpen: false,\n popoverId: getUniqueDomId()\n };\n\n _this.handleClick = function (ev) {\n var _a = _this,\n props = _a.props,\n context = _a.context;\n var moreLinkClick = context.options.moreLinkClick;\n var date = computeRange(props).start;\n\n function buildPublicSeg(seg) {\n var _a = seg.eventRange,\n def = _a.def,\n instance = _a.instance,\n range = _a.range;\n return {\n event: new EventApi(context, def, instance),\n start: context.dateEnv.toDate(range.start),\n end: context.dateEnv.toDate(range.end),\n isStart: seg.isStart,\n isEnd: seg.isEnd\n };\n }\n\n if (typeof moreLinkClick === 'function') {\n moreLinkClick = moreLinkClick({\n date: date,\n allDay: Boolean(props.allDayDate),\n allSegs: props.allSegs.map(buildPublicSeg),\n hiddenSegs: props.hiddenSegs.map(buildPublicSeg),\n jsEvent: ev,\n view: context.viewApi\n });\n }\n\n if (!moreLinkClick || moreLinkClick === 'popover') {\n _this.setState({\n isPopoverOpen: true\n });\n } else if (typeof moreLinkClick === 'string') {\n // a view name\n context.calendarApi.zoomTo(date, moreLinkClick);\n }\n };\n\n _this.handlePopoverClose = function () {\n _this.setState({\n isPopoverOpen: false\n });\n };\n\n return _this;\n }\n\n MoreLinkRoot.prototype.render = function () {\n var _this = this;\n\n var _a = this,\n props = _a.props,\n state = _a.state;\n\n return createElement(ViewContextType.Consumer, null, function (context) {\n var viewApi = context.viewApi,\n options = context.options,\n calendarApi = context.calendarApi;\n var moreLinkText = options.moreLinkText;\n var moreCnt = props.moreCnt;\n var range = computeRange(props);\n var text = typeof moreLinkText === 'function' // TODO: eventually use formatWithOrdinals\n ? moreLinkText.call(calendarApi, moreCnt) : \"+\" + moreCnt + \" \" + moreLinkText;\n var title = formatWithOrdinals(options.moreLinkHint, [moreCnt], text);\n var hookProps = {\n num: moreCnt,\n shortText: \"+\" + moreCnt,\n text: text,\n view: viewApi\n };\n return createElement(Fragment, null, Boolean(props.moreCnt) && createElement(RenderHook, {\n elRef: _this.linkElRef,\n hookProps: hookProps,\n classNames: options.moreLinkClassNames,\n content: options.moreLinkContent,\n defaultContent: props.defaultContent || renderMoreLinkInner,\n didMount: options.moreLinkDidMount,\n willUnmount: options.moreLinkWillUnmount\n }, function (rootElRef, customClassNames, innerElRef, innerContent) {\n return props.children(rootElRef, ['fc-more-link'].concat(customClassNames), innerElRef, innerContent, _this.handleClick, title, state.isPopoverOpen, state.isPopoverOpen ? state.popoverId : '');\n }), state.isPopoverOpen && createElement(MorePopover, {\n id: state.popoverId,\n startDate: range.start,\n endDate: range.end,\n dateProfile: props.dateProfile,\n todayRange: props.todayRange,\n extraDateSpan: props.extraDateSpan,\n parentEl: _this.parentEl,\n alignmentEl: props.alignmentElRef.current,\n alignGridTop: props.alignGridTop,\n onClose: _this.handlePopoverClose\n }, props.popoverContent()));\n });\n };\n\n MoreLinkRoot.prototype.componentDidMount = function () {\n this.updateParentEl();\n };\n\n MoreLinkRoot.prototype.componentDidUpdate = function () {\n this.updateParentEl();\n };\n\n MoreLinkRoot.prototype.updateParentEl = function () {\n if (this.linkElRef.current) {\n this.parentEl = elementClosest(this.linkElRef.current, '.fc-view-harness');\n }\n };\n\n return MoreLinkRoot;\n}(BaseComponent);\n\nfunction renderMoreLinkInner(props) {\n return props.text;\n}\n\nfunction computeRange(props) {\n if (props.allDayDate) {\n return {\n start: props.allDayDate,\n end: addDays(props.allDayDate, 1)\n };\n }\n\n var hiddenSegs = props.hiddenSegs;\n return {\n start: computeEarliestSegStart(hiddenSegs),\n end: computeLatestSegEnd(hiddenSegs)\n };\n}\n\nfunction computeEarliestSegStart(segs) {\n return segs.reduce(pickEarliestStart).eventRange.range.start;\n}\n\nfunction pickEarliestStart(seg0, seg1) {\n return seg0.eventRange.range.start < seg1.eventRange.range.start ? seg0 : seg1;\n}\n\nfunction computeLatestSegEnd(segs) {\n return segs.reduce(pickLatestEnd).eventRange.range.end;\n}\n\nfunction pickLatestEnd(seg0, seg1) {\n return seg0.eventRange.range.end > seg1.eventRange.range.end ? seg0 : seg1;\n} // exports\n// --------------------------------------------------------------------------------------------------\n\n\nvar version = '5.10.1'; // important to type it, so .d.ts has generic string\n\nexport { BASE_OPTION_DEFAULTS, BASE_OPTION_REFINERS, BaseComponent, BgEvent, CalendarApi, CalendarContent, CalendarDataManager, CalendarDataProvider, CalendarRoot, ContentHook, CustomContentRenderContext, DateComponent, DateEnv, DateProfileGenerator, DayCellContent, DayCellRoot, DayHeader, DaySeriesModel, DayTableModel, DelayedRunner, ElementDragging, ElementScrollController, Emitter, EventApi, EventRoot, EventSourceApi, Interaction, MoreLinkRoot, MountHook, NamedTimeZoneImpl, NowIndicatorRoot, NowTimer, PositionCache, RefMap, RenderHook, ScrollController, ScrollResponder, Scroller, SegHierarchy, SimpleScrollGrid, Slicer, Splitter, StandardEvent, TableDateCell, TableDowCell, Theme, ViewApi, ViewContextType, ViewRoot, WeekNumberRoot, WindowScrollController, addDays, addDurations, addMs, addWeeks, allowContextMenu, allowSelection, applyMutationToEventStore, applyStyle, applyStyleProp, asCleanDays, asRoughMinutes, asRoughMs, asRoughSeconds, binarySearch, buildClassNameNormalizer, buildEntryKey, buildEventApis, buildEventRangeKey, buildHashFromArray, buildIsoString, buildNavLinkAttrs, buildSegCompareObj, buildSegTimeText, collectFromHash, combineEventUis, compareByFieldSpec, compareByFieldSpecs, compareNumbers, compareObjs, computeEarliestSegStart, computeEdges, computeFallbackHeaderFormat, computeHeightAndMargins, computeInnerRect, computeRect, computeSegDraggable, computeSegEndResizable, computeSegStartResizable, computeShrinkWidth, computeSmallestCellWidth, computeVisibleDayRange, config, constrainPoint, createAriaClickAttrs, createDuration, createEmptyEventStore, createEventInstance, createEventUi, createFormatter, createPlugin, diffDates, diffDayAndTime, diffDays, diffPoints, diffWeeks, diffWholeDays, diffWholeWeeks, disableCursor, elementClosest, elementMatches, enableCursor, eventTupleToStore, filterEventStoreDefs, filterHash, findDirectChildren, findElements, flexibleCompare, formatDate, formatDayString, formatIsoTimeString, formatRange, getAllowYScrolling, getCanVGrowWithinCell, getClippingParents, getDateMeta, getDayClassNames, getDefaultEventEnd, getElRoot, getElSeg, getEntrySpanEnd, getEventClassNames, getEventTargetViaRoot, getIsRtlScrollbarOnLeft, getRectCenter, getRelevantEvents, getScrollGridClassNames, getScrollbarWidths, getSectionClassNames, getSectionHasLiquidHeight, getSegAnchorAttrs, getSegMeta, getSlotClassNames, getStickyFooterScrollbar, getStickyHeaderDates, getUnequalProps, getUniqueDomId, globalLocales, globalPlugins, greatestDurationDenominator, groupIntersectingEntries, guid, hasBgRendering, hasShrinkWidth, identity, interactionSettingsStore, interactionSettingsToStore, intersectRanges, intersectRects, intersectSpans, isArraysEqual, isColPropsEqual, isDateSelectionValid, isDateSpansEqual, isInt, isInteractionValid, isMultiDayRange, isPropsEqual, isPropsValid, isValidDate, joinSpans, listenBySelector, mapHash, memoize, memoizeArraylike, memoizeHashlike, memoizeObjArg, mergeEventStores, multiplyDuration, padStart, parseBusinessHours, parseClassNames, parseDragMeta, parseEventDef, parseFieldSpecs, parse as parseMarker, pointInsideRect, preventContextMenu, preventDefault, preventSelection, rangeContainsMarker, rangeContainsRange, rangesEqual, rangesIntersect, refineEventDef, refineProps, removeElement, removeExact, renderChunkContent, renderFill, renderMicroColGroup, renderScrollShim, requestJson, sanitizeShrinkWidth, setElSeg, setRef, sliceEventStore, sliceEvents, sortEventSegs, startOfDay, translateRect, triggerDateSelect, unpromisify, version, whenTransitionDone, wholeDivideDurations };","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * marked v4.3.0 - a markdown parser\n * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.marked = {}));\n})(this, function (exports) {\n 'use strict';\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n\n function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n\n function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n\n return (hint === \"string\" ? String : Number)(input);\n }\n\n function _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n\n return _typeof(key) === \"symbol\" ? key : String(key);\n }\n\n function getDefaults() {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n }\n\n exports.defaults = getDefaults();\n\n function changeDefaults(newDefaults) {\n exports.defaults = newDefaults;\n }\n /**\n * Helpers\n */\n\n\n var escapeTest = /[&<>\"']/;\n var escapeReplace = new RegExp(escapeTest.source, 'g');\n var escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\n var escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\n var escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n var getEscapeReplacement = function getEscapeReplacement(ch) {\n return escapeReplacements[ch];\n };\n\n function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n }\n\n var unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n /**\n * @param {string} html\n */\n\n function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, function (_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));\n }\n\n return '';\n });\n }\n\n var caret = /(^|[^\\[])\\^/g;\n /**\n * @param {string | RegExp} regex\n * @param {string} opt\n */\n\n function edit(regex, opt) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n var obj = {\n replace: function replace(name, val) {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: function getRegex() {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n }\n\n var nonWordAndColonTest = /[^\\w:]/g;\n var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n /**\n * @param {boolean} sanitize\n * @param {string} base\n * @param {string} href\n */\n\n function cleanUrl(sanitize, base, href) {\n if (sanitize) {\n var prot;\n\n try {\n prot = decodeURIComponent(unescape(href)).replace(nonWordAndColonTest, '').toLowerCase();\n } catch (e) {\n return null;\n }\n\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n\n return href;\n }\n\n var baseUrls = {};\n var justDomain = /^[^:]+:\\/*[^/]*$/;\n var protocol = /^([^:]+:)[\\s\\S]*$/;\n var domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n /**\n * @param {string} base\n * @param {string} href\n */\n\n function resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n\n base = baseUrls[' ' + base];\n var relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n }\n\n var noopTest = {\n exec: function noopTest() {}\n };\n\n function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n var row = tableRow.replace(/\\|/g, function (match, offset, str) {\n var escaped = false,\n curr = offset;\n\n while (--curr >= 0 && str[curr] === '\\\\') {\n escaped = !escaped;\n }\n\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n var i = 0; // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n\n if (!cells[0].trim()) {\n cells.shift();\n }\n\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) {\n cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n\n return cells;\n }\n /**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param {string} str\n * @param {string} c\n * @param {boolean} invert Remove suffix of non-c chars instead. Default falsey.\n */\n\n\n function rtrim(str, c, invert) {\n var l = str.length;\n\n if (l === 0) {\n return '';\n } // Length of suffix matching the invert condition.\n\n\n var suffLen = 0; // Step left until we fail to match the invert condition.\n\n while (suffLen < l) {\n var currChar = str.charAt(l - suffLen - 1);\n\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n }\n\n function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n\n var l = str.length;\n var level = 0,\n i = 0;\n\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n\n if (level < 0) {\n return i;\n }\n }\n }\n\n return -1;\n }\n\n function checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n } // copied from https://stackoverflow.com/a/5450113/806777\n\n /**\n * @param {string} pattern\n * @param {number} count\n */\n\n\n function repeatString(pattern, count) {\n if (count < 1) {\n return '';\n }\n\n var result = '';\n\n while (count > 1) {\n if (count & 1) {\n result += pattern;\n }\n\n count >>= 1;\n pattern += pattern;\n }\n\n return result + pattern;\n }\n\n function outputLink(cap, link, raw, lexer) {\n var href = link.href;\n var title = link.title ? escape(link.title) : null;\n var text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n var token = {\n type: 'link',\n raw: raw,\n href: href,\n title: title,\n text: text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n\n return {\n type: 'image',\n raw: raw,\n href: href,\n title: title,\n text: escape(text)\n };\n }\n\n function indentCodeCompensation(raw, text) {\n var matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n var indentToCode = matchIndentToCode[1];\n return text.split('\\n').map(function (node) {\n var matchIndentInNode = node.match(/^\\s+/);\n\n if (matchIndentInNode === null) {\n return node;\n }\n\n var indentInNode = matchIndentInNode[0];\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n }).join('\\n');\n }\n /**\n * Tokenizer\n */\n\n\n var Tokenizer =\n /*#__PURE__*/\n function () {\n function Tokenizer(options) {\n this.options = options || exports.defaults;\n }\n\n var _proto = Tokenizer.prototype;\n\n _proto.space = function space(src) {\n var cap = this.rules.block.newline.exec(src);\n\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n };\n\n _proto.code = function code(src) {\n var cap = this.rules.block.code.exec(src);\n\n if (cap) {\n var text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic ? rtrim(text, '\\n') : text\n };\n }\n };\n\n _proto.fences = function fences(src) {\n var cap = this.rules.block.fences.exec(src);\n\n if (cap) {\n var raw = cap[0];\n var text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw: raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text: text\n };\n }\n };\n\n _proto.heading = function heading(src) {\n var cap = this.rules.block.heading.exec(src);\n\n if (cap) {\n var text = cap[2].trim(); // remove trailing #s\n\n if (/#$/.test(text)) {\n var trimmed = rtrim(text, '#');\n\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text: text,\n tokens: this.lexer.inline(text)\n };\n }\n };\n\n _proto.hr = function hr(src) {\n var cap = this.rules.block.hr.exec(src);\n\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n };\n\n _proto.blockquote = function blockquote(src) {\n var cap = this.rules.block.blockquote.exec(src);\n\n if (cap) {\n var text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n var top = this.lexer.state.top;\n this.lexer.state.top = true;\n var tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens: tokens,\n text: text\n };\n }\n };\n\n _proto.list = function list(src) {\n var cap = this.rules.block.list.exec(src);\n\n if (cap) {\n var raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine, line, nextLine, rawLine, itemContents, endEarly;\n var bull = cap[1].trim();\n var isordered = bull.length > 1;\n var list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? \"\\\\d{1,9}\\\\\" + bull.slice(-1) : \"\\\\\" + bull;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n } // Get next list item\n\n\n var itemRegex = new RegExp(\"^( {0,3}\" + bull + \")((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))\"); // Check if current bullet point can start a new List Item\n\n while (src) {\n endEarly = false;\n\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) {\n // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, function (t) {\n return ' '.repeat(3 * t.length);\n });\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) {\n // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n var nextBulletRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))\");\n var hrRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)\");\n var fencesBeginRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}(?:```|~~~)\");\n var headingBeginRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}#\"); // Check if following lines should be included in List Item\n\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine; // Re-align to follow commonmark nesting rules\n\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n } // End list item if found code fences\n\n\n if (fencesBeginRegex.test(nextLine)) {\n break;\n } // End list item if found start of new heading\n\n\n if (headingBeginRegex.test(nextLine)) {\n break;\n } // End list item if found start of new bullet\n\n\n if (nextBulletRegex.test(nextLine)) {\n break;\n } // Horizontal rule found\n\n\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) {\n // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n } // paragraph continuation unless last line was a different block level element\n\n\n if (line.search(/[^ ]/) >= 4) {\n // indented code block\n break;\n }\n\n if (fencesBeginRegex.test(line)) {\n break;\n }\n\n if (headingBeginRegex.test(line)) {\n break;\n }\n\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) {\n // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n } // Check for task list items\n\n\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw: raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n list.raw += raw;\n } // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n\n\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n var l = list.items.length; // Item child tokens handled here at end because we needed to have the final item to trim it first\n\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n var spacers = list.items[i].tokens.filter(function (t) {\n return t.type === 'space';\n });\n var hasMultipleLineBreaks = spacers.length > 0 && spacers.some(function (t) {\n return /\\n.*\\n/.test(t.raw);\n });\n list.loose = hasMultipleLineBreaks;\n }\n } // Set all items to loose if list is loose\n\n\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n };\n\n _proto.html = function html(src) {\n var cap = this.rules.block.html.exec(src);\n\n if (cap) {\n var token = {\n type: 'html',\n raw: cap[0],\n pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n\n if (this.options.sanitize) {\n var text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n token.type = 'paragraph';\n token.text = text;\n token.tokens = this.lexer.inline(text);\n }\n\n return token;\n }\n };\n\n _proto.def = function def(src) {\n var cap = this.rules.block.def.exec(src);\n\n if (cap) {\n var tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n var href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n var title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag: tag,\n raw: cap[0],\n href: href,\n title: title\n };\n }\n };\n\n _proto.table = function table(src) {\n var cap = this.rules.block.table.exec(src);\n\n if (cap) {\n var item = {\n type: 'table',\n header: splitCells(cap[1]).map(function (c) {\n return {\n text: c\n };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n var l = item.align.length;\n var i, j, k, row;\n\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.rows.length;\n\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(function (c) {\n return {\n text: c\n };\n });\n } // parse child tokens inside headers and cells\n // header child tokens\n\n\n l = item.header.length;\n\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n } // cell child tokens\n\n\n l = item.rows.length;\n\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n };\n\n _proto.lheading = function lheading(src) {\n var cap = this.rules.block.lheading.exec(src);\n\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n };\n\n _proto.paragraph = function paragraph(src) {\n var cap = this.rules.block.paragraph.exec(src);\n\n if (cap) {\n var text = cap[1].charAt(cap[1].length - 1) === '\\n' ? cap[1].slice(0, -1) : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text: text,\n tokens: this.lexer.inline(text)\n };\n }\n };\n\n _proto.text = function text(src) {\n var cap = this.rules.block.text.exec(src);\n\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n };\n\n _proto.escape = function escape$1(src) {\n var cap = this.rules.inline.escape.exec(src);\n\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n };\n\n _proto.tag = function tag(src) {\n var cap = this.rules.inline.tag.exec(src);\n\n if (cap) {\n if (!this.lexer.state.inLink && /^/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize ? 'text' : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0]\n };\n }\n };\n\n _proto.link = function link(src) {\n var cap = this.rules.inline.link.exec(src);\n\n if (cap) {\n var trimmedUrl = cap[2].trim();\n\n if (!this.options.pedantic && /^$/.test(trimmedUrl)) {\n return;\n } // ending angle bracket cannot be escaped\n\n\n var rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n var lastParenIndex = findClosingBracket(cap[2], '()');\n\n if (lastParenIndex > -1) {\n var start = cap[0].indexOf('!') === 0 ? 5 : 4;\n var linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n\n var href = cap[2];\n var title = '';\n\n if (this.options.pedantic) {\n // split pedantic href and title\n var link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n\n if (/^$/.test(trimmedUrl)) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n };\n\n _proto.reflink = function reflink(src, links) {\n var cap;\n\n if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n var link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n\n if (!link) {\n var text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text: text\n };\n }\n\n return outputLink(cap, link, cap[0], this.lexer);\n }\n };\n\n _proto.emStrong = function emStrong(src, maskedSrc, prevChar) {\n if (prevChar === void 0) {\n prevChar = '';\n }\n\n var match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return; // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n\n if (match[3] && prevChar.match(/(?:[0-9A-Za-z\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xBC-\\xBE\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u0660-\\u0669\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0966-\\u096F\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09F9\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AEF\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\\u0B71-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0BE6-\\u0BF2\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D58-\\u0D61\\u0D66-\\u0D78\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DE6-\\u0DEF\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F20-\\u0F33\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F-\\u1049\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u1090-\\u1099\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B50-\\u1B59\\u1B83-\\u1BA0\\u1BAE-\\u1BE5\\u1C00-\\u1C23\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2CFD\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3192-\\u3195\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA830-\\uA835\\uA840-\\uA873\\uA882-\\uA8B3\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA900-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF-\\uA9D9\\uA9E0-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE1-\\uDEFB\\uDF00-\\uDF23\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC58-\\uDC76\\uDC79-\\uDC9E\\uDCA7-\\uDCAF\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDCFB-\\uDD1B\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBC-\\uDDCF\\uDDD2-\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE40-\\uDE48\\uDE60-\\uDE7E\\uDE80-\\uDE9F\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDEEB-\\uDEEF\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF58-\\uDF72\\uDF78-\\uDF91\\uDFA9-\\uDFAF]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDCFA-\\uDD23\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF27\\uDF30-\\uDF45\\uDF51-\\uDF54\\uDF70-\\uDF81\\uDFB0-\\uDFCB\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC52-\\uDC6F\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD03-\\uDD26\\uDD36-\\uDD3F\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDD0-\\uDDDA\\uDDDC\\uDDE1-\\uDDF4\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDEF0-\\uDEF9\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC50-\\uDC59\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEAA\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF30-\\uDF3B\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCF2\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC50-\\uDC6C\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF2\\uDFB0\\uDFC0-\\uDFD4]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDE70-\\uDEBE\\uDEC0-\\uDEC9\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF5B-\\uDF61\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE96\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB\\uDEF0-\\uDEF9]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDCC7-\\uDCCF\\uDD00-\\uDD43\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83C[\\uDD00-\\uDD0C]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])/)) return;\n var nextChar = match[1] || match[2] || '';\n\n if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {\n var lLength = match[0].length - 1;\n var rDelim,\n rLength,\n delimTotal = lLength,\n midDelimTotal = 0;\n var endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0; // Clip maskedSrc to same section of string as src (move to lexer?)\n\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) {\n // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) {\n // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n var raw = src.slice(0, lLength + match.index + (match[0].length - rDelim.length) + rLength); // Create `em` if smallest delimiter has odd char count. *a***\n\n if (Math.min(lLength, rLength) % 2) {\n var _text = raw.slice(1, -1);\n\n return {\n type: 'em',\n raw: raw,\n text: _text,\n tokens: this.lexer.inlineTokens(_text)\n };\n } // Create 'strong' if smallest delimiter has even char count. **a***\n\n\n var text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw: raw,\n text: text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n };\n\n _proto.codespan = function codespan(src) {\n var cap = this.rules.inline.code.exec(src);\n\n if (cap) {\n var text = cap[2].replace(/\\n/g, ' ');\n var hasNonSpaceChars = /[^ ]/.test(text);\n var hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text: text\n };\n }\n };\n\n _proto.br = function br(src) {\n var cap = this.rules.inline.br.exec(src);\n\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n };\n\n _proto.del = function del(src) {\n var cap = this.rules.inline.del.exec(src);\n\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n };\n\n _proto.autolink = function autolink(src, mangle) {\n var cap = this.rules.inline.autolink.exec(src);\n\n if (cap) {\n var text, href;\n\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.url = function url(src, mangle) {\n var cap;\n\n if (cap = this.rules.inline.url.exec(src)) {\n var text, href;\n\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n var prevCapZero;\n\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n\n text = escape(cap[0]);\n\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.inlineText = function inlineText(src, smartypants) {\n var cap = this.rules.inline.text.exec(src);\n\n if (cap) {\n var text;\n\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n\n return {\n type: 'text',\n raw: cap[0],\n text: text\n };\n }\n };\n\n return Tokenizer;\n }();\n /**\n * Block-Level Grammar\n */\n\n\n var block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:.|\\n(?!\\n))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n };\n block._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\n block._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\n block.def = edit(block.def).replace('label', block._label).replace('title', block._title).getRegex();\n block.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\n block.listItemStart = edit(/^( *)(bull) */).replace('bull', block.bullet).getRegex();\n block.list = edit(block.list).replace(/bull/g, block.bullet).replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))').replace('def', '\\\\n+(?=' + block.def.source + ')').getRegex();\n block._tag = 'address|article|aside|base|basefont|blockquote|body|caption' + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr' + '|track|ul';\n block._comment = /|$)/;\n block.html = edit(block.html, 'i').replace('comment', block._comment).replace('tag', block._tag).replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\n block.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '').replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n block.blockquote = edit(block.blockquote).replace('paragraph', block.paragraph).getRegex();\n /**\n * Normal Block Grammar\n */\n\n block.normal = _extends({}, block);\n /**\n * GFM Block Grammar\n */\n\n block.gfm = _extends({}, block.normal, {\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n\n });\n block.gfm.table = edit(block.gfm.table).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n block.gfm.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n /**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\n block.pedantic = _extends({}, block.normal, {\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)' + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))').replace('comment', block._comment).replace(/tag/g, '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b').getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph).replace('hr', block.hr).replace('heading', ' *#{1,6} *[^\\n]').replace('lheading', block.lheading).replace('blockquote', ' {0,3}>').replace('|fences', '').replace('|list', '').replace('|html', '').getRegex()\n });\n /**\n * Inline-Level Grammar\n */\n\n var inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment' + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^',\n // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // () Skip orphan inside strong () Consume to delim (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a\n rDelimAst: /^(?:[^_*\\\\]|\\\\.)*?\\_\\_(?:[^_*\\\\]|\\\\.)*?\\*(?:[^_*\\\\]|\\\\.)*?(?=\\_\\_)|(?:[^*\\\\]|\\\\.)+(?=[^*])|[punct_](\\*+)(?=[\\s]|$)|(?:[^punct*_\\s\\\\]|\\\\.)(\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|(?:[^punct*_\\s\\\\]|\\\\.)(\\*+)(?=[^punct*_\\s])/,\n rDelimUnd: /^(?:[^_*\\\\]|\\\\.)*?\\*\\*(?:[^_*\\\\]|\\\\.)*?\\_(?:[^_*\\\\]|\\\\.)*?(?=\\*\\*)|(?:[^_\\\\]|\\\\.)+(?=[^_])|[punct*](\\_+)(?=[\\s]|$)|(?:[^punct*_\\s\\\\]|\\\\.)(\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\?@\\\\[\\\\]`^{|}~';\n inline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex(); // sequences em should skip over [title](link), `code`, \n\n inline.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g; // lookbehind is not available on Safari as of version 16\n // inline.escapedEmSt = /(?<=(?:^|[^\\\\)(?:\\\\[^])*)\\\\[*_]/g;\n\n inline.escapedEmSt = /(?:^|[^\\\\])(?:\\\\\\\\)*\\\\[*_]/g;\n inline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n inline.emStrong.lDelim = edit(inline.emStrong.lDelim).replace(/punct/g, inline._punctuation).getRegex();\n inline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g').replace(/punct/g, inline._punctuation).getRegex();\n inline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g').replace(/punct/g, inline._punctuation).getRegex();\n inline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\n inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\n inline.autolink = edit(inline.autolink).replace('scheme', inline._scheme).replace('email', inline._email).getRegex();\n inline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n inline.tag = edit(inline.tag).replace('comment', inline._comment).replace('attribute', inline._attribute).getRegex();\n inline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\n inline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\n inline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n inline.link = edit(inline.link).replace('label', inline._label).replace('href', inline._href).replace('title', inline._title).getRegex();\n inline.reflink = edit(inline.reflink).replace('label', inline._label).replace('ref', block._label).getRegex();\n inline.nolink = edit(inline.nolink).replace('ref', block._label).getRegex();\n inline.reflinkSearch = edit(inline.reflinkSearch, 'g').replace('reflink', inline.reflink).replace('nolink', inline.nolink).getRegex();\n /**\n * Normal Inline Grammar\n */\n\n inline.normal = _extends({}, inline);\n /**\n * Pedantic Inline Grammar\n */\n\n inline.pedantic = _extends({}, inline.normal, {\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/).replace('label', inline._label).getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace('label', inline._label).getRegex()\n });\n /**\n * GFM Inline Grammar\n */\n\n inline.gfm = _extends({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n\n out += '&#' + ch + ';';\n }\n\n return out;\n }\n /**\n * Block Lexer\n */\n\n\n var Lexer =\n /*#__PURE__*/\n function () {\n function Lexer(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || exports.defaults;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n var rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n\n /**\n * Static Lex Method\n */\n\n\n Lexer.lex = function lex(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n ;\n\n Lexer.lexInline = function lexInline(src, options) {\n var lexer = new Lexer(options);\n return lexer.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n ;\n\n var _proto = Lexer.prototype;\n\n _proto.lex = function lex(src) {\n src = src.replace(/\\r\\n|\\r/g, '\\n');\n this.blockTokens(src, this.tokens);\n var next;\n\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n /**\n * Lexing\n */\n ;\n\n _proto.blockTokens = function blockTokens(src, tokens) {\n var _this = this;\n\n if (tokens === void 0) {\n tokens = [];\n }\n\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, function (_, leading, tabs) {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n var token, lastToken, cutSrc, lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some(function (extTokenizer) {\n if (token = extTokenizer.call({\n lexer: _this\n }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n\n return false;\n })) {\n continue;\n } // newline\n\n\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n\n continue;\n } // code\n\n\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1]; // An indented code block cannot interrupt a paragraph.\n\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // fences\n\n\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // heading\n\n\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // hr\n\n\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // blockquote\n\n\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // list\n\n\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // html\n\n\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // def\n\n\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n\n continue;\n } // table (gfm)\n\n\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // lheading\n\n\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n\n\n cutSrc = src;\n\n if (this.options.extensions && this.options.extensions.startBlock) {\n (function () {\n var startIndex = Infinity;\n var tempSrc = src.slice(1);\n var tempStart = void 0;\n\n _this.options.extensions.startBlock.forEach(function (getStartIndex) {\n tempStart = getStartIndex.call({\n lexer: this\n }, tempSrc);\n\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n })();\n }\n\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n\n lastParagraphClipped = cutSrc.length !== src.length;\n src = src.substring(token.raw.length);\n continue;\n } // text\n\n\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n };\n\n _proto.inline = function inline(src, tokens) {\n if (tokens === void 0) {\n tokens = [];\n }\n\n this.inlineQueue.push({\n src: src,\n tokens: tokens\n });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n ;\n\n _proto.inlineTokens = function inlineTokens(src, tokens) {\n var _this2 = this;\n\n if (tokens === void 0) {\n tokens = [];\n }\n\n var token, lastToken, cutSrc; // String with links masked to avoid interference with em and strong\n\n var maskedSrc = src;\n var match;\n var keepPrevChar, prevChar; // Mask out reflinks\n\n if (this.tokens.links) {\n var links = Object.keys(this.tokens.links);\n\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n } // Mask out other blocks\n\n\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n } // Mask out escaped em & strong delimiters\n\n\n while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index + match[0].length - 2) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n this.tokenizer.rules.inline.escapedEmSt.lastIndex--;\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n\n keepPrevChar = false; // extensions\n\n if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some(function (extTokenizer) {\n if (token = extTokenizer.call({\n lexer: _this2\n }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n\n return false;\n })) {\n continue;\n } // escape\n\n\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // tag\n\n\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // link\n\n\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // reflink, nolink\n\n\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // em & strong\n\n\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // code\n\n\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // br\n\n\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // del (gfm)\n\n\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // autolink\n\n\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // url (gfm)\n\n\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n\n\n cutSrc = src;\n\n if (this.options.extensions && this.options.extensions.startInline) {\n (function () {\n var startIndex = Infinity;\n var tempSrc = src.slice(1);\n var tempStart = void 0;\n\n _this2.options.extensions.startInline.forEach(function (getStartIndex) {\n tempStart = getStartIndex.call({\n lexer: this\n }, tempSrc);\n\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n })();\n }\n\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n\n if (token.raw.slice(-1) !== '_') {\n // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n };\n\n _createClass(Lexer, null, [{\n key: \"rules\",\n get: function get() {\n return {\n block: block,\n inline: inline\n };\n }\n }]);\n\n return Lexer;\n }();\n /**\n * Renderer\n */\n\n\n var Renderer =\n /*#__PURE__*/\n function () {\n function Renderer(options) {\n this.options = options || exports.defaults;\n }\n\n var _proto = Renderer.prototype;\n\n _proto.code = function code(_code, infostring, escaped) {\n var lang = (infostring || '').match(/\\S*/)[0];\n\n if (this.options.highlight) {\n var out = this.options.highlight(_code, lang);\n\n if (out != null && out !== _code) {\n escaped = true;\n _code = out;\n }\n }\n\n _code = _code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
' + (escaped ? _code : escape(_code, true)) + '
\\n';\n }\n\n return '
' + (escaped ? _code : escape(_code, true)) + '
\\n';\n }\n /**\n * @param {string} quote\n */\n ;\n\n _proto.blockquote = function blockquote(quote) {\n return \"
\\n\" + quote + \"
\\n\";\n };\n\n _proto.html = function html(_html) {\n return _html;\n }\n /**\n * @param {string} text\n * @param {string} level\n * @param {string} raw\n * @param {any} slugger\n */\n ;\n\n _proto.heading = function heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n var id = this.options.headerPrefix + slugger.slug(raw);\n return \"\" + text + \"\\n\";\n } // ignore IDs\n\n\n return \"\" + text + \"\\n\";\n };\n\n _proto.hr = function hr() {\n return this.options.xhtml ? '
\\n' : '
\\n';\n };\n\n _proto.list = function list(body, ordered, start) {\n var type = ordered ? 'ol' : 'ul',\n startatt = ordered && start !== 1 ? ' start=\"' + start + '\"' : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.listitem = function listitem(text) {\n return \"
  • \" + text + \"
  • \\n\";\n };\n\n _proto.checkbox = function checkbox(checked) {\n return ' ';\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.paragraph = function paragraph(text) {\n return \"

    \" + text + \"

    \\n\";\n }\n /**\n * @param {string} header\n * @param {string} body\n */\n ;\n\n _proto.table = function table(header, body) {\n if (body) body = \"
    \" + body + \"\";\n return '
    / elements with colspans.\n SOLUTION: making individual
    \\n' + '\\n' + header + '\\n' + body + '
    \\n';\n }\n /**\n * @param {string} content\n */\n ;\n\n _proto.tablerow = function tablerow(content) {\n return \"\\n\" + content + \"\\n\";\n };\n\n _proto.tablecell = function tablecell(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align ? \"<\" + type + \" align=\\\"\" + flags.align + \"\\\">\" : \"<\" + type + \">\";\n return tag + content + (\"\\n\");\n }\n /**\n * span level renderer\n * @param {string} text\n */\n ;\n\n _proto.strong = function strong(text) {\n return \"\" + text + \"\";\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.em = function em(text) {\n return \"\" + text + \"\";\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.codespan = function codespan(text) {\n return \"\" + text + \"\";\n };\n\n _proto.br = function br() {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.del = function del(text) {\n return \"\" + text + \"\";\n }\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n ;\n\n _proto.link = function link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = '
    ';\n return out;\n }\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n ;\n\n _proto.image = function image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = \"\\\"\"' : '>';\n return out;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n return Renderer;\n }();\n /**\n * TextRenderer\n * returns only the textual part of the token\n */\n\n\n var TextRenderer =\n /*#__PURE__*/\n function () {\n function TextRenderer() {}\n\n var _proto = TextRenderer.prototype; // no need for block level renderers\n\n _proto.strong = function strong(text) {\n return text;\n };\n\n _proto.em = function em(text) {\n return text;\n };\n\n _proto.codespan = function codespan(text) {\n return text;\n };\n\n _proto.del = function del(text) {\n return text;\n };\n\n _proto.html = function html(text) {\n return text;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n _proto.link = function link(href, title, text) {\n return '' + text;\n };\n\n _proto.image = function image(href, title, text) {\n return '' + text;\n };\n\n _proto.br = function br() {\n return '';\n };\n\n return TextRenderer;\n }();\n /**\n * Slugger generates header id\n */\n\n\n var Slugger =\n /*#__PURE__*/\n function () {\n function Slugger() {\n this.seen = {};\n }\n /**\n * @param {string} value\n */\n\n\n var _proto = Slugger.prototype;\n\n _proto.serialize = function serialize(value) {\n return value.toLowerCase().trim() // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '') // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '').replace(/\\s/g, '-');\n }\n /**\n * Finds the next safe (unique) slug to use\n * @param {string} originalSlug\n * @param {boolean} isDryRun\n */\n ;\n\n _proto.getNextSafeSlug = function getNextSafeSlug(originalSlug, isDryRun) {\n var slug = originalSlug;\n var occurenceAccumulator = 0;\n\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n\n return slug;\n }\n /**\n * Convert string to unique id\n * @param {object} [options]\n * @param {boolean} [options.dryrun] Generates the next unique slug without\n * updating the internal accumulator.\n */\n ;\n\n _proto.slug = function slug(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n };\n\n return Slugger;\n }();\n /**\n * Parsing & Compiling\n */\n\n\n var Parser =\n /*#__PURE__*/\n function () {\n function Parser(options) {\n this.options = options || exports.defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer();\n this.slugger = new Slugger();\n }\n /**\n * Static Parse Method\n */\n\n\n Parser.parse = function parse(tokens, options) {\n var parser = new Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n ;\n\n Parser.parseInline = function parseInline(tokens, options) {\n var parser = new Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n ;\n\n var _proto = Parser.prototype;\n\n _proto.parse = function parse(tokens, top) {\n if (top === void 0) {\n top = true;\n }\n\n var out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i]; // Run any renderer extensions\n\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({\n parser: this\n }, token);\n\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space':\n {\n continue;\n }\n\n case 'hr':\n {\n out += this.renderer.hr();\n continue;\n }\n\n case 'heading':\n {\n out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape(this.parseInline(token.tokens, this.textRenderer)), this.slugger);\n continue;\n }\n\n case 'code':\n {\n out += this.renderer.code(token.text, token.lang, token.escaped);\n continue;\n }\n\n case 'table':\n {\n header = ''; // header\n\n cell = '';\n l2 = token.header.length;\n\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(this.parseInline(token.header[j].tokens), {\n header: true,\n align: token.align[j]\n });\n }\n\n header += this.renderer.tablerow(cell);\n body = '';\n l2 = token.rows.length;\n\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n cell = '';\n l3 = row.length;\n\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k].tokens), {\n header: false,\n align: token.align[k]\n });\n }\n\n body += this.renderer.tablerow(cell);\n }\n\n out += this.renderer.table(header, body);\n continue;\n }\n\n case 'blockquote':\n {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n\n case 'list':\n {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n body = '';\n\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n itemBody = '';\n\n if (item.task) {\n checkbox = this.renderer.checkbox(checked);\n\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n\n case 'html':\n {\n // TODO parse inline content if parameter markdown=1\n out += this.renderer.html(token.text);\n continue;\n }\n\n case 'paragraph':\n {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n\n case 'text':\n {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n ;\n\n _proto.parseInline = function parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n var out = '',\n i,\n token,\n ret;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i]; // Run any renderer extensions\n\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({\n parser: this\n }, token);\n\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape':\n {\n out += renderer.text(token.text);\n break;\n }\n\n case 'html':\n {\n out += renderer.html(token.text);\n break;\n }\n\n case 'link':\n {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'image':\n {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n\n case 'strong':\n {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'em':\n {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'codespan':\n {\n out += renderer.codespan(token.text);\n break;\n }\n\n case 'br':\n {\n out += renderer.br();\n break;\n }\n\n case 'del':\n {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'text':\n {\n out += renderer.text(token.text);\n break;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n };\n\n return Parser;\n }();\n\n var Hooks =\n /*#__PURE__*/\n function () {\n function Hooks(options) {\n this.options = options || exports.defaults;\n }\n\n var _proto = Hooks.prototype;\n /**\n * Process markdown before marked\n */\n\n _proto.preprocess = function preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n ;\n\n _proto.postprocess = function postprocess(html) {\n return html;\n };\n\n return Hooks;\n }();\n\n Hooks.passThroughHooks = new Set(['preprocess', 'postprocess']);\n\n function onError(silent, async, callback) {\n return function (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n var msg = '

    An error occurred:

    ' + escape(e.message + '', true) + '
    ';\n\n if (async) {\n return Promise.resolve(msg);\n }\n\n if (callback) {\n callback(null, msg);\n return;\n }\n\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n\n if (callback) {\n callback(e);\n return;\n }\n\n throw e;\n };\n }\n\n function parseMarkdown(lexer, parser) {\n return function (src, opt, callback) {\n if (typeof opt === 'function') {\n callback = opt;\n opt = null;\n }\n\n var origOpt = _extends({}, opt);\n\n opt = _extends({}, marked.defaults, origOpt);\n var throwError = onError(opt.silent, opt.async, callback); // throw error in case of non string input\n\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkSanitizeDeprecation(opt);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n var highlight = opt.highlight;\n var tokens;\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e);\n }\n\n var done = function done(err) {\n var out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n\n out = parser(tokens, opt);\n\n if (opt.hooks) {\n out = opt.hooks.postprocess(out);\n }\n } catch (e) {\n err = e;\n }\n }\n\n opt.highlight = highlight;\n return err ? throwError(err) : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n if (!tokens.length) return done();\n var pending = 0;\n marked.walkTokens(tokens, function (token) {\n if (token.type === 'code') {\n pending++;\n setTimeout(function () {\n highlight(token.text, token.lang, function (err, code) {\n if (err) {\n return done(err);\n }\n\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src).then(function (src) {\n return lexer(src, opt);\n }).then(function (tokens) {\n return opt.walkTokens ? Promise.all(marked.walkTokens(tokens, opt.walkTokens)).then(function () {\n return tokens;\n }) : tokens;\n }).then(function (tokens) {\n return parser(tokens, opt);\n }).then(function (html) {\n return opt.hooks ? opt.hooks.postprocess(html) : html;\n })[\"catch\"](throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n\n var _tokens = lexer(src, opt);\n\n if (opt.walkTokens) {\n marked.walkTokens(_tokens, opt.walkTokens);\n }\n\n var html = parser(_tokens, opt);\n\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n\n return html;\n } catch (e) {\n return throwError(e);\n }\n };\n }\n /**\n * Marked\n */\n\n\n function marked(src, opt, callback) {\n return parseMarkdown(Lexer.lex, Parser.parse)(src, opt, callback);\n }\n /**\n * Options\n */\n\n\n marked.options = marked.setOptions = function (opt) {\n marked.defaults = _extends({}, marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n };\n\n marked.getDefaults = getDefaults;\n marked.defaults = exports.defaults;\n /**\n * Use Extension\n */\n\n marked.use = function () {\n var extensions = marked.defaults.extensions || {\n renderers: {},\n childTokens: {}\n };\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n args.forEach(function (pack) {\n // copy options to new object\n var opts = _extends({}, pack); // set async to true if it was set to true before\n\n\n opts.async = marked.defaults.async || opts.async || false; // ==-- Parse \"addon\" extensions --== //\n\n if (pack.extensions) {\n pack.extensions.forEach(function (ext) {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n\n if (ext.renderer) {\n // Renderer extensions\n var prevRenderer = extensions.renderers[ext.name];\n\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var ret = ext.renderer.apply(this, args);\n\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n\n if (ext.tokenizer) {\n // Tokenizer Extensions\n if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n\n if (ext.start) {\n // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n\n if (ext.childTokens) {\n // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n } // ==-- Parse \"overwrite\" extensions --== //\n\n\n if (pack.renderer) {\n (function () {\n var renderer = marked.defaults.renderer || new Renderer();\n\n var _loop = function _loop(prop) {\n var prevRenderer = renderer[prop]; // Replace renderer with func to run extension, but fall back if false\n\n renderer[prop] = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n var ret = pack.renderer[prop].apply(renderer, args);\n\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in pack.renderer) {\n _loop(prop);\n }\n\n opts.renderer = renderer;\n })();\n }\n\n if (pack.tokenizer) {\n (function () {\n var tokenizer = marked.defaults.tokenizer || new Tokenizer();\n\n var _loop2 = function _loop2(prop) {\n var prevTokenizer = tokenizer[prop]; // Replace tokenizer with func to run extension, but fall back if false\n\n tokenizer[prop] = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n var ret = pack.tokenizer[prop].apply(tokenizer, args);\n\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in pack.tokenizer) {\n _loop2(prop);\n }\n\n opts.tokenizer = tokenizer;\n })();\n } // ==-- Parse Hooks extensions --== //\n\n\n if (pack.hooks) {\n (function () {\n var hooks = marked.defaults.hooks || new Hooks();\n\n var _loop3 = function _loop3(prop) {\n var prevHook = hooks[prop];\n\n if (Hooks.passThroughHooks.has(prop)) {\n hooks[prop] = function (arg) {\n if (marked.defaults.async) {\n return Promise.resolve(pack.hooks[prop].call(hooks, arg)).then(function (ret) {\n return prevHook.call(hooks, ret);\n });\n }\n\n var ret = pack.hooks[prop].call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n hooks[prop] = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n var ret = pack.hooks[prop].apply(hooks, args);\n\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n\n return ret;\n };\n }\n };\n\n for (var prop in pack.hooks) {\n _loop3(prop);\n }\n\n opts.hooks = hooks;\n })();\n } // ==-- Parse WalkTokens extensions --== //\n\n\n if (pack.walkTokens) {\n var _walkTokens = marked.defaults.walkTokens;\n\n opts.walkTokens = function (token) {\n var values = [];\n values.push(pack.walkTokens.call(this, token));\n\n if (_walkTokens) {\n values = values.concat(_walkTokens.call(this, token));\n }\n\n return values;\n };\n }\n\n marked.setOptions(opts);\n });\n };\n /**\n * Run callback for every token\n */\n\n\n marked.walkTokens = function (tokens, callback) {\n var values = [];\n\n var _loop4 = function _loop4() {\n var token = _step.value;\n values = values.concat(callback.call(marked, token));\n\n switch (token.type) {\n case 'table':\n {\n for (var _iterator2 = _createForOfIteratorHelperLoose(token.header), _step2; !(_step2 = _iterator2()).done;) {\n var cell = _step2.value;\n values = values.concat(marked.walkTokens(cell.tokens, callback));\n }\n\n for (var _iterator3 = _createForOfIteratorHelperLoose(token.rows), _step3; !(_step3 = _iterator3()).done;) {\n var row = _step3.value;\n\n for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {\n var _cell = _step4.value;\n values = values.concat(marked.walkTokens(_cell.tokens, callback));\n }\n }\n\n break;\n }\n\n case 'list':\n {\n values = values.concat(marked.walkTokens(token.items, callback));\n break;\n }\n\n default:\n {\n if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) {\n // Walk any extensions\n marked.defaults.extensions.childTokens[token.type].forEach(function (childTokens) {\n values = values.concat(marked.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(marked.walkTokens(token.tokens, callback));\n }\n }\n }\n };\n\n for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {\n _loop4();\n }\n\n return values;\n };\n /**\n * Parse Inline\n * @param {string} src\n */\n\n\n marked.parseInline = parseMarkdown(Lexer.lexInline, Parser.parseInline);\n /**\n * Expose\n */\n\n marked.Parser = Parser;\n marked.parser = Parser.parse;\n marked.Renderer = Renderer;\n marked.TextRenderer = TextRenderer;\n marked.Lexer = Lexer;\n marked.lexer = Lexer.lex;\n marked.Tokenizer = Tokenizer;\n marked.Slugger = Slugger;\n marked.Hooks = Hooks;\n marked.parse = marked;\n var options = marked.options;\n var setOptions = marked.setOptions;\n var use = marked.use;\n var walkTokens = marked.walkTokens;\n var parseInline = marked.parseInline;\n var parse = marked;\n var parser = Parser.parse;\n var lexer = Lexer.lex;\n exports.Hooks = Hooks;\n exports.Lexer = Lexer;\n exports.Parser = Parser;\n exports.Renderer = Renderer;\n exports.Slugger = Slugger;\n exports.TextRenderer = TextRenderer;\n exports.Tokenizer = Tokenizer;\n exports.getDefaults = getDefaults;\n exports.lexer = lexer;\n exports.marked = marked;\n exports.options = options;\n exports.parse = parse;\n exports.parseInline = parseInline;\n exports.parser = parser;\n exports.setOptions = setOptions;\n exports.use = use;\n exports.walkTokens = walkTokens;\n});","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * PDFObject v2.3.0\n * https://github.com/pipwerks/PDFObject\n * @license\n * Copyright (c) 2008-2024 Philip Hutchison\n * MIT-style license: http://pipwerks.mit-license.org/\n * UMD module pattern from https://github.com/umdjs/umd/blob/master/templates/returnExports.js\n */\n(function (root, factory) {\n if (typeof define === \"function\" && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === \"object\" && module.exports) {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.PDFObject = factory();\n }\n})(this, function () {\n \"use strict\"; //PDFObject is designed for client-side (browsers), not server-side (node)\n //Will choke on undefined navigator and window vars when run on server\n //Return boolean false and exit function when running server-side\n\n if (typeof window === \"undefined\" || window.navigator === undefined || window.navigator.userAgent === undefined) {\n return false;\n }\n\n var pdfobjectversion = \"2.3.0\";\n var win = window;\n var nav = win.navigator;\n var ua = nav.userAgent;\n var suppressConsole = false; //Fallback validation when navigator.pdfViewerEnabled is not supported\n\n var isModernBrowser = function isModernBrowser() {\n /*\n userAgent sniffing is not the ideal path, but most browsers revoked the ability to check navigator.mimeTypes \n for security purposes. As of 2023, browsers have begun implementing navigator.pdfViewerEnabled, but older versions\n do not have navigator.pdfViewerEnabled or the ability to check navigator.mimeTypes. We're left with basic browser \n sniffing and assumptions of PDF support based on browser vendor.\n */\n //Chromium has provided native PDF support since 2011.\n //Most modern browsers use Chromium under the hood: Google Chrome, Microsoft Edge, Opera, Brave, Vivaldi, Arc, and more.\n //Chromium uses the PDFium rendering engine, which is based on Foxit's PDF rendering engine.\n //Note that MS Edge opts to use a different PDF rendering engine. As of 2024, Edge uses a version of Adobe's Reader\n var isChromium = win.chrome !== undefined; //Safari on macOS has provided native PDF support since 2009. \n //This code snippet also detects the DuckDuckGo browser, which uses Safari/Webkit under the hood.\n\n var isSafari = win.safari !== undefined || nav.vendor !== undefined && /Apple/.test(nav.vendor) && /Safari/.test(ua); //Firefox has provided PDF support via PDFJS since 2013.\n\n var isFirefox = win.Mozilla !== undefined || /irefox/.test(ua);\n return isChromium || isSafari || isFirefox;\n };\n /*\n Special handling for Internet Explorer 11.\n Check for ActiveX support, then whether \"AcroPDF.PDF\" or \"PDF.PdfCtrl\" are valid.\n IE11 uses ActiveX for Adobe Reader and other PDF plugins, but window.ActiveXObject will evaluate to false. \n (\"ActiveXObject\" in window) evaluates to true.\n MS Edge does not support ActiveX so this test will evaluate false for MS Edge.\n */\n\n\n var validateAX = function validateAX(type) {\n var ax = null;\n\n try {\n ax = new ActiveXObject(type);\n } catch (e) {\n //ensure ax remains null when ActiveXObject attempt fails\n ax = null;\n }\n\n return !!ax; //convert resulting object to boolean\n };\n\n var hasActiveXPDFPlugin = function hasActiveXPDFPlugin() {\n return \"ActiveXObject\" in win && (validateAX(\"AcroPDF.PDF\") || validateAX(\"PDF.PdfCtrl\"));\n };\n\n var checkSupport = function checkSupport() {\n //Safari on iPadOS doesn't report as 'mobile' when requesting desktop site, yet still fails to embed PDFs\n var isSafariIOSDesktopMode = nav.platform !== undefined && nav.platform === \"MacIntel\" && nav.maxTouchPoints !== undefined && nav.maxTouchPoints > 1;\n var isMobileDevice = isSafariIOSDesktopMode || /Mobi|Tablet|Android|iPad|iPhone/.test(ua); //As of June 2023, no mobile browsers properly support inline PDFs. If mobile, just say no.\n\n if (isMobileDevice) {\n return false;\n } //Modern browsers began supporting navigator.pdfViewerEnabled in late 2022 and early 2023.\n\n\n var supportsPDFVE = typeof nav.pdfViewerEnabled === \"boolean\"; //If browser supports nav.pdfViewerEnabled and is explicitly saying PDFs are NOT supported (e.g. PDFJS disabled by user in Firefox), respect it.\n\n if (supportsPDFVE && !nav.pdfViewerEnabled) {\n return false;\n }\n\n return supportsPDFVE && nav.pdfViewerEnabled || isModernBrowser() || hasActiveXPDFPlugin();\n }; //Determines whether PDF support is available\n\n\n var supportsPDFs = checkSupport(); //Create a fragment identifier for using PDF Open parameters when embedding PDF\n\n var buildURLFragmentString = function buildURLFragmentString(pdfParams) {\n var string = \"\";\n var prop;\n var paramArray = [];\n var fdf = \"\"; //The comment, viewrect, and highlight parameters require page to be set first. \n //Check to ensure page is used if comment, viewrect, or highlight are specified\n\n if (pdfParams.comment || pdfParams.viewrect || pdfParams.highlight) {\n if (!pdfParams.page) {\n //If page is not set, use the first page\n pdfParams.page = 1; //Inform user that page needs to be set properly\n\n embedError(\"The comment, viewrect, and highlight parameters require a page parameter, but none was specified. Defaulting to page 1.\");\n }\n } //Let's go ahead and ensure page is always the first parameter.\n\n\n if (pdfParams.page) {\n paramArray.push(\"page=\" + encodeURIComponent(pdfParams.page));\n delete pdfParams.page;\n } //FDF needs to be the last parameter in the string\n\n\n if (pdfParams.fdf) {\n fdf = pdfParams.fdf;\n delete pdfParams.fdf;\n } //Add all other parameters, as needed\n\n\n if (pdfParams) {\n for (prop in pdfParams) {\n if (pdfParams.hasOwnProperty(prop)) {\n paramArray.push(encodeURIComponent(prop) + \"=\" + encodeURIComponent(pdfParams[prop]));\n }\n } //Add fdf as the last parameter, if needed\n\n\n if (fdf) {\n paramArray.push(\"fdf=\" + encodeURIComponent(fdf));\n } //Join all parameters in the array into a string\n\n\n string = paramArray.join(\"&\"); //The string will be empty if no PDF Parameters were provided\n //Only prepend the hash if the string is not empty\n\n if (string) {\n string = \"#\" + string;\n }\n }\n\n return string;\n };\n\n var embedError = function embedError(msg) {\n if (!suppressConsole) {\n console.log(\"[PDFObject]\", msg);\n }\n\n return false;\n };\n\n var emptyNodeContents = function emptyNodeContents(node) {\n while (node.firstChild) {\n node.removeChild(node.firstChild);\n }\n };\n\n var getTargetElement = function getTargetElement(targetSelector) {\n //Default to body for full-browser PDF\n var targetNode = document.body; //If a targetSelector is specified, check to see whether\n //it's passing a selector, jQuery object, or an HTML element\n\n if (typeof targetSelector === \"string\") {\n //Is CSS selector\n targetNode = document.querySelector(targetSelector);\n } else if (win.jQuery !== undefined && targetSelector instanceof jQuery && targetSelector.length) {\n //Is jQuery element. Extract HTML node\n targetNode = targetSelector.get(0);\n } else if (targetSelector.nodeType !== undefined && targetSelector.nodeType === 1) {\n //Is HTML element\n targetNode = targetSelector;\n }\n\n return targetNode;\n };\n\n var convertBase64ToDownloadableLink = function convertBase64ToDownloadableLink(b64, filename, targetNode, fallbackHTML) {\n //IE-11 safe version. More verbose than modern fetch()\n if (window.Blob && window.URL && window.URL.createObjectURL) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', b64, true);\n xhr.responseType = 'blob';\n\n xhr.onload = function () {\n if (xhr.status === 200) {\n var blob = xhr.response;\n var link = document.createElement('a');\n link.innerText = \"Download PDF\";\n link.href = URL.createObjectURL(blob);\n link.setAttribute('download', filename);\n targetNode.innerHTML = fallbackHTML.replace(/\\[pdflink\\]/g, link.outerHTML);\n }\n };\n\n xhr.send();\n }\n };\n\n var generatePDFObjectMarkup = function generatePDFObjectMarkup(embedType, targetNode, url, pdfOpenFragment, width, height, id, title, omitInlineStyles, customAttribute, PDFJS_URL) {\n //Ensure target element is empty first\n emptyNodeContents(targetNode);\n var source = url;\n\n if (embedType === \"pdfjs\") {\n //If PDFJS_URL already contains a ?, assume querystring is in place, and use an ampersand to append PDFJS's file parameter\n var connector = PDFJS_URL.indexOf(\"?\") !== -1 ? \"&\" : \"?\";\n source = PDFJS_URL + connector + \"file=\" + encodeURIComponent(url) + pdfOpenFragment;\n } else {\n source += pdfOpenFragment;\n }\n\n var el = document.createElement(\"iframe\");\n el.className = \"pdfobject\";\n el.type = \"application/pdf\";\n el.title = title;\n el.src = source;\n el.allow = \"fullscreen\";\n el.frameborder = \"0\";\n\n if (id) {\n el.id = id;\n }\n\n if (!omitInlineStyles) {\n var style = \"border: none;\";\n\n if (targetNode !== document.body) {\n //assign width and height to target node\n style += \"width: \" + width + \"; height: \" + height + \";\";\n } else {\n //this is a full-page embed, use CSS to fill the viewport\n style += \"position: absolute; top: 0; right: 0; bottom: 0; left: 0; width: 100%; height: 100%;\";\n }\n\n el.style.cssText = style;\n } //Allow developer to insert custom attribute on iframe element, but ensure it does not conflict with attributes used by PDFObject\n\n\n var reservedTokens = [\"className\", \"type\", \"title\", \"src\", \"style\", \"id\", \"allow\", \"frameborder\"];\n\n if (customAttribute && customAttribute.key && reservedTokens.indexOf(customAttribute.key) === -1) {\n el.setAttribute(customAttribute.key, typeof customAttribute.value !== \"undefined\" ? customAttribute.value : \"\");\n }\n\n targetNode.classList.add(\"pdfobject-container\");\n targetNode.appendChild(el);\n return targetNode.getElementsByTagName(\"iframe\")[0];\n };\n\n var _embed = function embed(url, targetSelector, options) {\n //If targetSelector is not defined, convert to boolean\n var selector = targetSelector || false; //Ensure options object is not undefined -- enables easier error checking below\n\n var opt = options || {}; //Get passed options, or set reasonable defaults\n\n suppressConsole = typeof opt.suppressConsole === \"boolean\" ? opt.suppressConsole : false;\n var id = typeof opt.id === \"string\" ? opt.id : \"\";\n var page = opt.page || false;\n var pdfOpenParams = opt.pdfOpenParams || {};\n var fallbackLink = typeof opt.fallbackLink === \"string\" || typeof opt.fallbackLink === \"boolean\" ? opt.fallbackLink : true;\n var width = opt.width || \"100%\";\n var height = opt.height || \"100%\";\n var title = opt.title || \"Embedded PDF\";\n var forcePDFJS = typeof opt.forcePDFJS === \"boolean\" ? opt.forcePDFJS : false;\n var omitInlineStyles = typeof opt.omitInlineStyles === \"boolean\" ? opt.omitInlineStyles : false;\n var PDFJS_URL = opt.PDFJS_URL || false;\n var targetNode = getTargetElement(selector);\n var pdfOpenFragment = \"\";\n var customAttribute = opt.customAttribute || {};\n var fallbackHTML_default = \"

    This browser does not support inline PDFs. Please download the PDF to view it: [pdflink]

    \"; //Ensure URL is available. If not, exit now.\n\n if (typeof url !== \"string\") {\n return embedError(\"URL is not valid\");\n } //If target element is specified but is not valid, exit without doing anything\n\n\n if (!targetNode) {\n return embedError(\"Target element cannot be determined\");\n } //page option overrides pdfOpenParams, if found\n\n\n if (page) {\n pdfOpenParams.page = page;\n } //Stringify optional Adobe params for opening document (as fragment identifier)\n\n\n pdfOpenFragment = buildURLFragmentString(pdfOpenParams); // --== Do the dance: Embed attempt #1 ==--\n //If the forcePDFJS option is invoked, skip everything else and embed as directed\n\n if (forcePDFJS && PDFJS_URL) {\n return generatePDFObjectMarkup(\"pdfjs\", targetNode, url, pdfOpenFragment, width, height, id, title, omitInlineStyles, customAttribute, PDFJS_URL);\n } // --== Embed attempt #2 ==--\n //Embed PDF if support is detected, or if this is a relatively modern browser \n\n\n if (supportsPDFs) {\n return generatePDFObjectMarkup(\"iframe\", targetNode, url, pdfOpenFragment, width, height, id, title, omitInlineStyles, customAttribute);\n } // --== Embed attempt #3 ==--\n //If everything else has failed and a PDFJS fallback is provided, try to use it\n\n\n if (PDFJS_URL) {\n return generatePDFObjectMarkup(\"pdfjs\", targetNode, url, pdfOpenFragment, width, height, id, title, omitInlineStyles, customAttribute, PDFJS_URL);\n } // --== PDF embed not supported! Use fallback ==-- \n //Display the fallback link if available\n\n\n if (fallbackLink) {\n //If a custom fallback has been provided, handle it now\n if (typeof fallbackLink === \"string\") {\n //Ensure [url] is set in custom fallback\n targetNode.innerHTML = fallbackLink.replace(/\\[url\\]/g, url);\n } else {\n //If the PDF is a base64 string, convert it to a downloadable link\n if (url.indexOf(\"data:application/pdf;base64\") !== -1) {\n //Asynchronously append the link to the targetNode\n convertBase64ToDownloadableLink(url, \"file.pdf\", targetNode, fallbackHTML_default);\n } else {\n //Use default fallback link\n var link = \"
    Download PDF\";\n targetNode.innerHTML = fallbackHTML_default.replace(/\\[pdflink\\]/g, link);\n }\n }\n }\n\n return embedError(\"This browser does not support embedded PDFs\");\n };\n\n return {\n embed: function embed(a, b, c) {\n return _embed(a, b, c);\n },\n pdfobjectversion: function () {\n return pdfobjectversion;\n }(),\n supportsPDFs: function () {\n return supportsPDFs;\n }()\n };\n});","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n!function (t, e) {\n \"object\" == (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) && \"object\" == (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) ? module.exports = e() : \"function\" == typeof define && define.amd ? define([], e) : \"object\" == (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) ? exports.VueMultiselect = e() : t.VueMultiselect = e();\n}(this, function () {\n return function (t) {\n function e(i) {\n if (n[i]) return n[i].exports;\n var r = n[i] = {\n i: i,\n l: !1,\n exports: {}\n };\n return t[i].call(r.exports, r, r.exports, e), r.l = !0, r.exports;\n }\n\n var n = {};\n return e.m = t, e.c = n, e.i = function (t) {\n return t;\n }, e.d = function (t, n, i) {\n e.o(t, n) || Object.defineProperty(t, n, {\n configurable: !1,\n enumerable: !0,\n get: i\n });\n }, e.n = function (t) {\n var n = t && t.__esModule ? function () {\n return t[\"default\"];\n } : function () {\n return t;\n };\n return e.d(n, \"a\", n), n;\n }, e.o = function (t, e) {\n return Object.prototype.hasOwnProperty.call(t, e);\n }, e.p = \"/\", e(e.s = 60);\n }([function (t, e) {\n var n = t.exports = \"undefined\" != typeof window && window.Math == Math ? window : \"undefined\" != typeof self && self.Math == Math ? self : Function(\"return this\")();\n \"number\" == typeof __g && (__g = n);\n }, function (t, e, n) {\n var i = n(49)(\"wks\"),\n r = n(30),\n o = n(0).Symbol,\n s = \"function\" == typeof o;\n (t.exports = function (t) {\n return i[t] || (i[t] = s && o[t] || (s ? o : r)(\"Symbol.\" + t));\n }).store = i;\n }, function (t, e, n) {\n var i = n(5);\n\n t.exports = function (t) {\n if (!i(t)) throw TypeError(t + \" is not an object!\");\n return t;\n };\n }, function (t, e, n) {\n var i = n(0),\n r = n(10),\n o = n(8),\n s = n(6),\n u = n(11),\n a = function a(t, e, n) {\n var l,\n c,\n f,\n p,\n h = t & a.F,\n d = t & a.G,\n v = t & a.S,\n g = t & a.P,\n y = t & a.B,\n m = d ? i : v ? i[e] || (i[e] = {}) : (i[e] || {}).prototype,\n b = d ? r : r[e] || (r[e] = {}),\n _ = b.prototype || (b.prototype = {});\n\n d && (n = e);\n\n for (l in n) {\n c = !h && m && void 0 !== m[l], f = (c ? m : n)[l], p = y && c ? u(f, i) : g && \"function\" == typeof f ? u(Function.call, f) : f, m && s(m, l, f, t & a.U), b[l] != f && o(b, l, p), g && _[l] != f && (_[l] = f);\n }\n };\n\n i.core = r, a.F = 1, a.G = 2, a.S = 4, a.P = 8, a.B = 16, a.W = 32, a.U = 64, a.R = 128, t.exports = a;\n }, function (t, e, n) {\n t.exports = !n(7)(function () {\n return 7 != Object.defineProperty({}, \"a\", {\n get: function get() {\n return 7;\n }\n }).a;\n });\n }, function (t, e) {\n t.exports = function (t) {\n return \"object\" == _typeof(t) ? null !== t : \"function\" == typeof t;\n };\n }, function (t, e, n) {\n var i = n(0),\n r = n(8),\n o = n(12),\n s = n(30)(\"src\"),\n u = Function.toString,\n a = (\"\" + u).split(\"toString\");\n n(10).inspectSource = function (t) {\n return u.call(t);\n }, (t.exports = function (t, e, n, u) {\n var l = \"function\" == typeof n;\n l && (o(n, \"name\") || r(n, \"name\", e)), t[e] !== n && (l && (o(n, s) || r(n, s, t[e] ? \"\" + t[e] : a.join(String(e)))), t === i ? t[e] = n : u ? t[e] ? t[e] = n : r(t, e, n) : (delete t[e], r(t, e, n)));\n })(Function.prototype, \"toString\", function () {\n return \"function\" == typeof this && this[s] || u.call(this);\n });\n }, function (t, e) {\n t.exports = function (t) {\n try {\n return !!t();\n } catch (t) {\n return !0;\n }\n };\n }, function (t, e, n) {\n var i = n(13),\n r = n(25);\n t.exports = n(4) ? function (t, e, n) {\n return i.f(t, e, r(1, n));\n } : function (t, e, n) {\n return t[e] = n, t;\n };\n }, function (t, e) {\n var n = {}.toString;\n\n t.exports = function (t) {\n return n.call(t).slice(8, -1);\n };\n }, function (t, e) {\n var n = t.exports = {\n version: \"2.5.7\"\n };\n \"number\" == typeof __e && (__e = n);\n }, function (t, e, n) {\n var i = n(14);\n\n t.exports = function (t, e, n) {\n if (i(t), void 0 === e) return t;\n\n switch (n) {\n case 1:\n return function (n) {\n return t.call(e, n);\n };\n\n case 2:\n return function (n, i) {\n return t.call(e, n, i);\n };\n\n case 3:\n return function (n, i, r) {\n return t.call(e, n, i, r);\n };\n }\n\n return function () {\n return t.apply(e, arguments);\n };\n };\n }, function (t, e) {\n var n = {}.hasOwnProperty;\n\n t.exports = function (t, e) {\n return n.call(t, e);\n };\n }, function (t, e, n) {\n var i = n(2),\n r = n(41),\n o = n(29),\n s = Object.defineProperty;\n e.f = n(4) ? Object.defineProperty : function (t, e, n) {\n if (i(t), e = o(e, !0), i(n), r) try {\n return s(t, e, n);\n } catch (t) {}\n if (\"get\" in n || \"set\" in n) throw TypeError(\"Accessors not supported!\");\n return \"value\" in n && (t[e] = n.value), t;\n };\n }, function (t, e) {\n t.exports = function (t) {\n if (\"function\" != typeof t) throw TypeError(t + \" is not a function!\");\n return t;\n };\n }, function (t, e) {\n t.exports = {};\n }, function (t, e) {\n t.exports = function (t) {\n if (void 0 == t) throw TypeError(\"Can't call method on \" + t);\n return t;\n };\n }, function (t, e, n) {\n \"use strict\";\n\n var i = n(7);\n\n t.exports = function (t, e) {\n return !!t && i(function () {\n e ? t.call(null, function () {}, 1) : t.call(null);\n });\n };\n }, function (t, e, n) {\n var i = n(23),\n r = n(16);\n\n t.exports = function (t) {\n return i(r(t));\n };\n }, function (t, e, n) {\n var i = n(53),\n r = Math.min;\n\n t.exports = function (t) {\n return t > 0 ? r(i(t), 9007199254740991) : 0;\n };\n }, function (t, e, n) {\n var i = n(11),\n r = n(23),\n o = n(28),\n s = n(19),\n u = n(64);\n\n t.exports = function (t, e) {\n var n = 1 == t,\n a = 2 == t,\n l = 3 == t,\n c = 4 == t,\n f = 6 == t,\n p = 5 == t || f,\n h = e || u;\n return function (e, u, d) {\n for (var v, g, y = o(e), m = r(y), b = i(u, d, 3), _ = s(m.length), x = 0, w = n ? h(e, _) : a ? h(e, 0) : void 0; _ > x; x++) {\n if ((p || x in m) && (v = m[x], g = b(v, x, y), t)) if (n) w[x] = g;else if (g) switch (t) {\n case 3:\n return !0;\n\n case 5:\n return v;\n\n case 6:\n return x;\n\n case 2:\n w.push(v);\n } else if (c) return !1;\n }\n\n return f ? -1 : l || c ? c : w;\n };\n };\n }, function (t, e, n) {\n var i = n(5),\n r = n(0).document,\n o = i(r) && i(r.createElement);\n\n t.exports = function (t) {\n return o ? r.createElement(t) : {};\n };\n }, function (t, e) {\n t.exports = \"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\");\n }, function (t, e, n) {\n var i = n(9);\n t.exports = Object(\"z\").propertyIsEnumerable(0) ? Object : function (t) {\n return \"String\" == i(t) ? t.split(\"\") : Object(t);\n };\n }, function (t, e) {\n t.exports = !1;\n }, function (t, e) {\n t.exports = function (t, e) {\n return {\n enumerable: !(1 & t),\n configurable: !(2 & t),\n writable: !(4 & t),\n value: e\n };\n };\n }, function (t, e, n) {\n var i = n(13).f,\n r = n(12),\n o = n(1)(\"toStringTag\");\n\n t.exports = function (t, e, n) {\n t && !r(t = n ? t : t.prototype, o) && i(t, o, {\n configurable: !0,\n value: e\n });\n };\n }, function (t, e, n) {\n var i = n(49)(\"keys\"),\n r = n(30);\n\n t.exports = function (t) {\n return i[t] || (i[t] = r(t));\n };\n }, function (t, e, n) {\n var i = n(16);\n\n t.exports = function (t) {\n return Object(i(t));\n };\n }, function (t, e, n) {\n var i = n(5);\n\n t.exports = function (t, e) {\n if (!i(t)) return t;\n var n, r;\n if (e && \"function\" == typeof (n = t.toString) && !i(r = n.call(t))) return r;\n if (\"function\" == typeof (n = t.valueOf) && !i(r = n.call(t))) return r;\n if (!e && \"function\" == typeof (n = t.toString) && !i(r = n.call(t))) return r;\n throw TypeError(\"Can't convert object to primitive value\");\n };\n }, function (t, e) {\n var n = 0,\n i = Math.random();\n\n t.exports = function (t) {\n return \"Symbol(\".concat(void 0 === t ? \"\" : t, \")_\", (++n + i).toString(36));\n };\n }, function (t, e, n) {\n \"use strict\";\n\n var i = n(0),\n r = n(12),\n o = n(9),\n s = n(67),\n u = n(29),\n a = n(7),\n l = n(77).f,\n c = n(45).f,\n f = n(13).f,\n p = n(51).trim,\n _h = i.Number,\n d = _h,\n v = _h.prototype,\n g = \"Number\" == o(n(44)(v)),\n y = \"trim\" in String.prototype,\n m = function m(t) {\n var e = u(t, !1);\n\n if (\"string\" == typeof e && e.length > 2) {\n e = y ? e.trim() : p(e, 3);\n var n,\n i,\n r,\n o = e.charCodeAt(0);\n\n if (43 === o || 45 === o) {\n if (88 === (n = e.charCodeAt(2)) || 120 === n) return NaN;\n } else if (48 === o) {\n switch (e.charCodeAt(1)) {\n case 66:\n case 98:\n i = 2, r = 49;\n break;\n\n case 79:\n case 111:\n i = 8, r = 55;\n break;\n\n default:\n return +e;\n }\n\n for (var s, a = e.slice(2), l = 0, c = a.length; l < c; l++) {\n if ((s = a.charCodeAt(l)) < 48 || s > r) return NaN;\n }\n\n return parseInt(a, i);\n }\n }\n\n return +e;\n };\n\n if (!_h(\" 0o1\") || !_h(\"0b1\") || _h(\"+0x1\")) {\n _h = function h(t) {\n var e = arguments.length < 1 ? 0 : t,\n n = this;\n return n instanceof _h && (g ? a(function () {\n v.valueOf.call(n);\n }) : \"Number\" != o(n)) ? s(new d(m(e)), n, _h) : m(e);\n };\n\n for (var b, _ = n(4) ? l(d) : \"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger\".split(\",\"), x = 0; _.length > x; x++) {\n r(d, b = _[x]) && !r(_h, b) && f(_h, b, c(d, b));\n }\n\n _h.prototype = v, v.constructor = _h, n(6)(i, \"Number\", _h);\n }\n }, function (t, e, n) {\n \"use strict\";\n\n function i(t) {\n return 0 !== t && (!(!Array.isArray(t) || 0 !== t.length) || !t);\n }\n\n function r(t) {\n return function () {\n return !t.apply(void 0, arguments);\n };\n }\n\n function o(t, e) {\n return void 0 === t && (t = \"undefined\"), null === t && (t = \"null\"), !1 === t && (t = \"false\"), -1 !== t.toString().toLowerCase().indexOf(e.trim());\n }\n\n function s(t, e, n, i) {\n return t.filter(function (t) {\n return o(i(t, n), e);\n });\n }\n\n function u(t) {\n return t.filter(function (t) {\n return !t.$isLabel;\n });\n }\n\n function a(t, e) {\n return function (n) {\n return n.reduce(function (n, i) {\n return i[t] && i[t].length ? (n.push({\n $groupLabel: i[e],\n $isLabel: !0\n }), n.concat(i[t])) : n;\n }, []);\n };\n }\n\n function l(t, e, i, r, o) {\n return function (u) {\n return u.map(function (u) {\n var a;\n if (!u[i]) return console.warn(\"Options passed to vue-multiselect do not contain groups, despite the config.\"), [];\n var l = s(u[i], t, e, o);\n return l.length ? (a = {}, n.i(d.a)(a, r, u[r]), n.i(d.a)(a, i, l), a) : [];\n });\n };\n }\n\n var c = n(59),\n f = n(54),\n p = (n.n(f), n(95)),\n h = (n.n(p), n(31)),\n d = (n.n(h), n(58)),\n v = n(91),\n g = (n.n(v), n(98)),\n y = (n.n(g), n(92)),\n m = (n.n(y), n(88)),\n b = (n.n(m), n(97)),\n _ = (n.n(b), n(89)),\n x = (n.n(_), n(96)),\n w = (n.n(x), n(93)),\n S = (n.n(w), n(90)),\n O = (n.n(S), function () {\n for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) {\n e[n] = arguments[n];\n }\n\n return function (t) {\n return e.reduce(function (t, e) {\n return e(t);\n }, t);\n };\n });\n\n e.a = {\n data: function data() {\n return {\n search: \"\",\n isOpen: !1,\n preferredOpenDirection: \"below\",\n optimizedHeight: this.maxHeight\n };\n },\n props: {\n internalSearch: {\n type: Boolean,\n \"default\": !0\n },\n options: {\n type: Array,\n required: !0\n },\n multiple: {\n type: Boolean,\n \"default\": !1\n },\n value: {\n type: null,\n \"default\": function _default() {\n return [];\n }\n },\n trackBy: {\n type: String\n },\n label: {\n type: String\n },\n searchable: {\n type: Boolean,\n \"default\": !0\n },\n clearOnSelect: {\n type: Boolean,\n \"default\": !0\n },\n hideSelected: {\n type: Boolean,\n \"default\": !1\n },\n placeholder: {\n type: String,\n \"default\": \"Select option\"\n },\n allowEmpty: {\n type: Boolean,\n \"default\": !0\n },\n resetAfter: {\n type: Boolean,\n \"default\": !1\n },\n closeOnSelect: {\n type: Boolean,\n \"default\": !0\n },\n customLabel: {\n type: Function,\n \"default\": function _default(t, e) {\n return i(t) ? \"\" : e ? t[e] : t;\n }\n },\n taggable: {\n type: Boolean,\n \"default\": !1\n },\n tagPlaceholder: {\n type: String,\n \"default\": \"Press enter to create a tag\"\n },\n tagPosition: {\n type: String,\n \"default\": \"top\"\n },\n max: {\n type: [Number, Boolean],\n \"default\": !1\n },\n id: {\n \"default\": null\n },\n optionsLimit: {\n type: Number,\n \"default\": 1e3\n },\n groupValues: {\n type: String\n },\n groupLabel: {\n type: String\n },\n groupSelect: {\n type: Boolean,\n \"default\": !1\n },\n blockKeys: {\n type: Array,\n \"default\": function _default() {\n return [];\n }\n },\n preserveSearch: {\n type: Boolean,\n \"default\": !1\n },\n preselectFirst: {\n type: Boolean,\n \"default\": !1\n }\n },\n mounted: function mounted() {\n !this.multiple && this.max && console.warn(\"[Vue-Multiselect warn]: Max prop should not be used when prop Multiple equals false.\"), this.preselectFirst && !this.internalValue.length && this.options.length && this.select(this.filteredOptions[0]);\n },\n computed: {\n internalValue: function internalValue() {\n return this.value || 0 === this.value ? Array.isArray(this.value) ? this.value : [this.value] : [];\n },\n filteredOptions: function filteredOptions() {\n var t = this.search || \"\",\n e = t.toLowerCase().trim(),\n n = this.options.concat();\n return n = this.internalSearch ? this.groupValues ? this.filterAndFlat(n, e, this.label) : s(n, e, this.label, this.customLabel) : this.groupValues ? a(this.groupValues, this.groupLabel)(n) : n, n = this.hideSelected ? n.filter(r(this.isSelected)) : n, this.taggable && e.length && !this.isExistingOption(e) && (\"bottom\" === this.tagPosition ? n.push({\n isTag: !0,\n label: t\n }) : n.unshift({\n isTag: !0,\n label: t\n })), n.slice(0, this.optionsLimit);\n },\n valueKeys: function valueKeys() {\n var t = this;\n return this.trackBy ? this.internalValue.map(function (e) {\n return e[t.trackBy];\n }) : this.internalValue;\n },\n optionKeys: function optionKeys() {\n var t = this;\n return (this.groupValues ? this.flatAndStrip(this.options) : this.options).map(function (e) {\n return t.customLabel(e, t.label).toString().toLowerCase();\n });\n },\n currentOptionLabel: function currentOptionLabel() {\n return this.multiple ? this.searchable ? \"\" : this.placeholder : this.internalValue.length ? this.getOptionLabel(this.internalValue[0]) : this.searchable ? \"\" : this.placeholder;\n }\n },\n watch: {\n internalValue: function internalValue() {\n this.resetAfter && this.internalValue.length && (this.search = \"\", this.$emit(\"input\", this.multiple ? [] : null));\n },\n search: function search() {\n this.$emit(\"search-change\", this.search, this.id);\n }\n },\n methods: {\n getValue: function getValue() {\n return this.multiple ? this.internalValue : 0 === this.internalValue.length ? null : this.internalValue[0];\n },\n filterAndFlat: function filterAndFlat(t, e, n) {\n return O(l(e, n, this.groupValues, this.groupLabel, this.customLabel), a(this.groupValues, this.groupLabel))(t);\n },\n flatAndStrip: function flatAndStrip(t) {\n return O(a(this.groupValues, this.groupLabel), u)(t);\n },\n updateSearch: function updateSearch(t) {\n this.search = t;\n },\n isExistingOption: function isExistingOption(t) {\n return !!this.options && this.optionKeys.indexOf(t) > -1;\n },\n isSelected: function isSelected(t) {\n var e = this.trackBy ? t[this.trackBy] : t;\n return this.valueKeys.indexOf(e) > -1;\n },\n isOptionDisabled: function isOptionDisabled(t) {\n return !!t.$isDisabled;\n },\n getOptionLabel: function getOptionLabel(t) {\n if (i(t)) return \"\";\n if (t.isTag) return t.label;\n if (t.$isLabel) return t.$groupLabel;\n var e = this.customLabel(t, this.label);\n return i(e) ? \"\" : e;\n },\n select: function select(t, e) {\n if (t.$isLabel && this.groupSelect) return void this.selectGroup(t);\n\n if (!(-1 !== this.blockKeys.indexOf(e) || this.disabled || t.$isDisabled || t.$isLabel) && (!this.max || !this.multiple || this.internalValue.length !== this.max) && (\"Tab\" !== e || this.pointerDirty)) {\n if (t.isTag) this.$emit(\"tag\", t.label, this.id), this.search = \"\", this.closeOnSelect && !this.multiple && this.deactivate();else {\n if (this.isSelected(t)) return void (\"Tab\" !== e && this.removeElement(t));\n this.$emit(\"select\", t, this.id), this.multiple ? this.$emit(\"input\", this.internalValue.concat([t]), this.id) : this.$emit(\"input\", t, this.id), this.clearOnSelect && (this.search = \"\");\n }\n this.closeOnSelect && this.deactivate();\n }\n },\n selectGroup: function selectGroup(t) {\n var e = this,\n n = this.options.find(function (n) {\n return n[e.groupLabel] === t.$groupLabel;\n });\n if (n) if (this.wholeGroupSelected(n)) {\n this.$emit(\"remove\", n[this.groupValues], this.id);\n var i = this.internalValue.filter(function (t) {\n return -1 === n[e.groupValues].indexOf(t);\n });\n this.$emit(\"input\", i, this.id);\n } else {\n var r = n[this.groupValues].filter(function (t) {\n return !(e.isOptionDisabled(t) || e.isSelected(t));\n });\n this.$emit(\"select\", r, this.id), this.$emit(\"input\", this.internalValue.concat(r), this.id);\n }\n },\n wholeGroupSelected: function wholeGroupSelected(t) {\n var e = this;\n return t[this.groupValues].every(function (t) {\n return e.isSelected(t) || e.isOptionDisabled(t);\n });\n },\n wholeGroupDisabled: function wholeGroupDisabled(t) {\n return t[this.groupValues].every(this.isOptionDisabled);\n },\n removeElement: function removeElement(t) {\n var e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];\n\n if (!this.disabled && !t.$isDisabled) {\n if (!this.allowEmpty && this.internalValue.length <= 1) return void this.deactivate();\n var i = \"object\" === n.i(c.a)(t) ? this.valueKeys.indexOf(t[this.trackBy]) : this.valueKeys.indexOf(t);\n\n if (this.$emit(\"remove\", t, this.id), this.multiple) {\n var r = this.internalValue.slice(0, i).concat(this.internalValue.slice(i + 1));\n this.$emit(\"input\", r, this.id);\n } else this.$emit(\"input\", null, this.id);\n\n this.closeOnSelect && e && this.deactivate();\n }\n },\n removeLastElement: function removeLastElement() {\n -1 === this.blockKeys.indexOf(\"Delete\") && 0 === this.search.length && Array.isArray(this.internalValue) && this.internalValue.length && this.removeElement(this.internalValue[this.internalValue.length - 1], !1);\n },\n activate: function activate() {\n var t = this;\n this.isOpen || this.disabled || (this.adjustPosition(), this.groupValues && 0 === this.pointer && this.filteredOptions.length && (this.pointer = 1), this.isOpen = !0, this.searchable ? (this.preserveSearch || (this.search = \"\"), this.$nextTick(function () {\n return t.$refs.search.focus();\n })) : this.$el.focus(), this.$emit(\"open\", this.id));\n },\n deactivate: function deactivate() {\n this.isOpen && (this.isOpen = !1, this.searchable ? this.$refs.search.blur() : this.$el.blur(), this.preserveSearch || (this.search = \"\"), this.$emit(\"close\", this.getValue(), this.id));\n },\n toggle: function toggle() {\n this.isOpen ? this.deactivate() : this.activate();\n },\n adjustPosition: function adjustPosition() {\n if (\"undefined\" != typeof window) {\n var t = this.$el.getBoundingClientRect().top,\n e = window.innerHeight - this.$el.getBoundingClientRect().bottom;\n e > this.maxHeight || e > t || \"below\" === this.openDirection || \"bottom\" === this.openDirection ? (this.preferredOpenDirection = \"below\", this.optimizedHeight = Math.min(e - 40, this.maxHeight)) : (this.preferredOpenDirection = \"above\", this.optimizedHeight = Math.min(t - 40, this.maxHeight));\n }\n }\n }\n };\n }, function (t, e, n) {\n \"use strict\";\n\n var i = n(54),\n r = (n.n(i), n(31));\n n.n(r);\n e.a = {\n data: function data() {\n return {\n pointer: 0,\n pointerDirty: !1\n };\n },\n props: {\n showPointer: {\n type: Boolean,\n \"default\": !0\n },\n optionHeight: {\n type: Number,\n \"default\": 40\n }\n },\n computed: {\n pointerPosition: function pointerPosition() {\n return this.pointer * this.optionHeight;\n },\n visibleElements: function visibleElements() {\n return this.optimizedHeight / this.optionHeight;\n }\n },\n watch: {\n filteredOptions: function filteredOptions() {\n this.pointerAdjust();\n },\n isOpen: function isOpen() {\n this.pointerDirty = !1;\n }\n },\n methods: {\n optionHighlight: function optionHighlight(t, e) {\n return {\n \"multiselect__option--highlight\": t === this.pointer && this.showPointer,\n \"multiselect__option--selected\": this.isSelected(e)\n };\n },\n groupHighlight: function groupHighlight(t, e) {\n var n = this;\n if (!this.groupSelect) return [\"multiselect__option--group\", \"multiselect__option--disabled\"];\n var i = this.options.find(function (t) {\n return t[n.groupLabel] === e.$groupLabel;\n });\n return i && !this.wholeGroupDisabled(i) ? [\"multiselect__option--group\", {\n \"multiselect__option--highlight\": t === this.pointer && this.showPointer\n }, {\n \"multiselect__option--group-selected\": this.wholeGroupSelected(i)\n }] : \"multiselect__option--disabled\";\n },\n addPointerElement: function addPointerElement() {\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : \"Enter\",\n e = t.key;\n this.filteredOptions.length > 0 && this.select(this.filteredOptions[this.pointer], e), this.pointerReset();\n },\n pointerForward: function pointerForward() {\n this.pointer < this.filteredOptions.length - 1 && (this.pointer++, this.$refs.list.scrollTop <= this.pointerPosition - (this.visibleElements - 1) * this.optionHeight && (this.$refs.list.scrollTop = this.pointerPosition - (this.visibleElements - 1) * this.optionHeight), this.filteredOptions[this.pointer] && this.filteredOptions[this.pointer].$isLabel && !this.groupSelect && this.pointerForward()), this.pointerDirty = !0;\n },\n pointerBackward: function pointerBackward() {\n this.pointer > 0 ? (this.pointer--, this.$refs.list.scrollTop >= this.pointerPosition && (this.$refs.list.scrollTop = this.pointerPosition), this.filteredOptions[this.pointer] && this.filteredOptions[this.pointer].$isLabel && !this.groupSelect && this.pointerBackward()) : this.filteredOptions[this.pointer] && this.filteredOptions[0].$isLabel && !this.groupSelect && this.pointerForward(), this.pointerDirty = !0;\n },\n pointerReset: function pointerReset() {\n this.closeOnSelect && (this.pointer = 0, this.$refs.list && (this.$refs.list.scrollTop = 0));\n },\n pointerAdjust: function pointerAdjust() {\n this.pointer >= this.filteredOptions.length - 1 && (this.pointer = this.filteredOptions.length ? this.filteredOptions.length - 1 : 0), this.filteredOptions.length > 0 && this.filteredOptions[this.pointer].$isLabel && !this.groupSelect && this.pointerForward();\n },\n pointerSet: function pointerSet(t) {\n this.pointer = t, this.pointerDirty = !0;\n }\n }\n };\n }, function (t, e, n) {\n \"use strict\";\n\n var i = n(36),\n r = n(74),\n o = n(15),\n s = n(18);\n t.exports = n(72)(Array, \"Array\", function (t, e) {\n this._t = s(t), this._i = 0, this._k = e;\n }, function () {\n var t = this._t,\n e = this._k,\n n = this._i++;\n return !t || n >= t.length ? (this._t = void 0, r(1)) : \"keys\" == e ? r(0, n) : \"values\" == e ? r(0, t[n]) : r(0, [n, t[n]]);\n }, \"values\"), o.Arguments = o.Array, i(\"keys\"), i(\"values\"), i(\"entries\");\n }, function (t, e, n) {\n \"use strict\";\n\n var i = n(31),\n r = (n.n(i), n(32)),\n o = n(33);\n e.a = {\n name: \"vue-multiselect\",\n mixins: [r.a, o.a],\n props: {\n name: {\n type: String,\n \"default\": \"\"\n },\n selectLabel: {\n type: String,\n \"default\": \"Press enter to select\"\n },\n selectGroupLabel: {\n type: String,\n \"default\": \"Press enter to select group\"\n },\n selectedLabel: {\n type: String,\n \"default\": \"Selected\"\n },\n deselectLabel: {\n type: String,\n \"default\": \"Press enter to remove\"\n },\n deselectGroupLabel: {\n type: String,\n \"default\": \"Press enter to deselect group\"\n },\n showLabels: {\n type: Boolean,\n \"default\": !0\n },\n limit: {\n type: Number,\n \"default\": 99999\n },\n maxHeight: {\n type: Number,\n \"default\": 300\n },\n limitText: {\n type: Function,\n \"default\": function _default(t) {\n return \"and \".concat(t, \" more\");\n }\n },\n loading: {\n type: Boolean,\n \"default\": !1\n },\n disabled: {\n type: Boolean,\n \"default\": !1\n },\n openDirection: {\n type: String,\n \"default\": \"\"\n },\n showNoOptions: {\n type: Boolean,\n \"default\": !0\n },\n showNoResults: {\n type: Boolean,\n \"default\": !0\n },\n tabindex: {\n type: Number,\n \"default\": 0\n }\n },\n computed: {\n isSingleLabelVisible: function isSingleLabelVisible() {\n return (this.singleValue || 0 === this.singleValue) && (!this.isOpen || !this.searchable) && !this.visibleValues.length;\n },\n isPlaceholderVisible: function isPlaceholderVisible() {\n return !(this.internalValue.length || this.searchable && this.isOpen);\n },\n visibleValues: function visibleValues() {\n return this.multiple ? this.internalValue.slice(0, this.limit) : [];\n },\n singleValue: function singleValue() {\n return this.internalValue[0];\n },\n deselectLabelText: function deselectLabelText() {\n return this.showLabels ? this.deselectLabel : \"\";\n },\n deselectGroupLabelText: function deselectGroupLabelText() {\n return this.showLabels ? this.deselectGroupLabel : \"\";\n },\n selectLabelText: function selectLabelText() {\n return this.showLabels ? this.selectLabel : \"\";\n },\n selectGroupLabelText: function selectGroupLabelText() {\n return this.showLabels ? this.selectGroupLabel : \"\";\n },\n selectedLabelText: function selectedLabelText() {\n return this.showLabels ? this.selectedLabel : \"\";\n },\n inputStyle: function inputStyle() {\n if (this.searchable || this.multiple && this.value && this.value.length) return this.isOpen ? {\n width: \"100%\"\n } : {\n width: \"0\",\n position: \"absolute\",\n padding: \"0\"\n };\n },\n contentStyle: function contentStyle() {\n return this.options.length ? {\n display: \"inline-block\"\n } : {\n display: \"block\"\n };\n },\n isAbove: function isAbove() {\n return \"above\" === this.openDirection || \"top\" === this.openDirection || \"below\" !== this.openDirection && \"bottom\" !== this.openDirection && \"above\" === this.preferredOpenDirection;\n },\n showSearchInput: function showSearchInput() {\n return this.searchable && (!this.hasSingleSelectedSlot || !this.visibleSingleValue && 0 !== this.visibleSingleValue || this.isOpen);\n }\n }\n };\n }, function (t, e, n) {\n var i = n(1)(\"unscopables\"),\n r = Array.prototype;\n void 0 == r[i] && n(8)(r, i, {}), t.exports = function (t) {\n r[i][t] = !0;\n };\n }, function (t, e, n) {\n var i = n(18),\n r = n(19),\n o = n(85);\n\n t.exports = function (t) {\n return function (e, n, s) {\n var u,\n a = i(e),\n l = r(a.length),\n c = o(s, l);\n\n if (t && n != n) {\n for (; l > c;) {\n if ((u = a[c++]) != u) return !0;\n }\n } else for (; l > c; c++) {\n if ((t || c in a) && a[c] === n) return t || c || 0;\n }\n\n return !t && -1;\n };\n };\n }, function (t, e, n) {\n var i = n(9),\n r = n(1)(\"toStringTag\"),\n o = \"Arguments\" == i(function () {\n return arguments;\n }()),\n s = function s(t, e) {\n try {\n return t[e];\n } catch (t) {}\n };\n\n t.exports = function (t) {\n var e, n, u;\n return void 0 === t ? \"Undefined\" : null === t ? \"Null\" : \"string\" == typeof (n = s(e = Object(t), r)) ? n : o ? i(e) : \"Object\" == (u = i(e)) && \"function\" == typeof e.callee ? \"Arguments\" : u;\n };\n }, function (t, e, n) {\n \"use strict\";\n\n var i = n(2);\n\n t.exports = function () {\n var t = i(this),\n e = \"\";\n return t.global && (e += \"g\"), t.ignoreCase && (e += \"i\"), t.multiline && (e += \"m\"), t.unicode && (e += \"u\"), t.sticky && (e += \"y\"), e;\n };\n }, function (t, e, n) {\n var i = n(0).document;\n t.exports = i && i.documentElement;\n }, function (t, e, n) {\n t.exports = !n(4) && !n(7)(function () {\n return 7 != Object.defineProperty(n(21)(\"div\"), \"a\", {\n get: function get() {\n return 7;\n }\n }).a;\n });\n }, function (t, e, n) {\n var i = n(9);\n\n t.exports = Array.isArray || function (t) {\n return \"Array\" == i(t);\n };\n }, function (t, e, n) {\n \"use strict\";\n\n function i(t) {\n var e, n;\n this.promise = new t(function (t, i) {\n if (void 0 !== e || void 0 !== n) throw TypeError(\"Bad Promise constructor\");\n e = t, n = i;\n }), this.resolve = r(e), this.reject = r(n);\n }\n\n var r = n(14);\n\n t.exports.f = function (t) {\n return new i(t);\n };\n }, function (t, e, n) {\n var i = n(2),\n r = n(76),\n o = n(22),\n s = n(27)(\"IE_PROTO\"),\n u = function u() {},\n _a = function a() {\n var t,\n e = n(21)(\"iframe\"),\n i = o.length;\n\n for (e.style.display = \"none\", n(40).appendChild(e), e.src = \"javascript:\", t = e.contentWindow.document, t.open(), t.write(\"